Closed hiqua closed 5 years ago
DeepCode analyzed this pull request. There are no new issues.
doesOpcodeEndBlock()
and doesOpcodeEndExecution()
or so, so that these checks are consistent everywhere.I agree with everything you mention, and I have the same questions regarding Decompiler vs DecompilerFallback.
I think I'll first focus on having more tests before we do these changes, so that we can keep track of whether we introduce bugs or not.
For STOP
it is clear that it fixes some things using the examples I have added on another branch (basically Securify does not fail on SafeMath anymore), I'm looking for examples for the other opcodes now so that we can compare.
Isn't this an example for REVERT
?
pragma solidity ^0.4.24;
contract C{
function() public payable{
revert();
}
}
Yes, and it works also for the other opcodes, so perfect.
I've added the other opcodes and tests, if the changes are good for you I'll reorganize the commits and merge.
Can you briefly explain the changes that are going on in the 238 changed files? How does the end-to-end testing work? From where is it triggered?
Can you briefly explain the changes that are going on in the 238 changed files? How does the end-to-end testing work? From where is it triggered?
Sorry that should be clearer now, basically I want to wait until the end_to_end_testing branch is merged before we merge this. It just compares the current output with saved output so that we manually acknowledge the changes. See #57 for more details.
See #68.
I think this change would make sense given the surrounding code and comments, but not completely sure. This fixes the bug with the empty contract:
Blocked by #57.