Don't assume that an expression cannot be associated with a function declaration

This commit is contained in:
Kamil Śliwak
2020-05-27 00:05:18 +02:00
parent 50b200a5d5
commit f574d8ec3a
2 changed files with 24 additions and 2 deletions
@@ -0,0 +1,24 @@
contract C {
function foo() internal returns (uint) {
return 42;
}
function get_ptr(function() internal returns (uint) ptr) internal returns(function() internal returns (uint)) {
return ptr;
}
function associated() public returns (uint) {
// This expression directly references function definition
return (foo)();
}
function unassociated() public returns (uint) {
// This expression is not associated with a specific function definition
return (get_ptr(foo))();
}
}
// ====
// compileViaYul: also
// ----
// associated() -> 42
// unassociated() -> 42