Detector: Function signature collision #670
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In this PR, we rely on the
function_selector
property being available on the AST Node of type function definition.Since it's an
Optional<String>
property, unfortunately in the older solidity versions this isNone
. So it wouldn't trigger for solc versions ^0.4.0 for example.Logic:
It groups the function names by their selectors. If we come across a case where there are
>= 2
function names for a given selector we capture all the corresponding functions.Flaw:
The function names could be same but the function parameters vary, then they don't get captured.
Caveat:
This capture happens regardless of whether or not the functions with colliding signatures are are in the same inheritance hierarchy. If they were, the compilation wouldn't be successful in the first place for all the versions that we support (0.4.11 and above).. btw if you compile a 0.4.10 contract even forge bails :)