mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #9032 from ethereum/sol-yul-fix-wrong-function-type-declaration-assumption
[Sol->Yul] Remove wrong assumption about function declarations associated an expressions
This commit is contained in:
		
						commit
						41725b2065
					
				| @ -675,8 +675,6 @@ void IRGeneratorForStatements::endVisit(FunctionCall const& _functionCall) | ||||
| 
 | ||||
| 			solAssert(functionDef->isImplemented(), ""); | ||||
| 		} | ||||
| 		else | ||||
| 			solAssert(!functionType->hasDeclaration(), ""); | ||||
| 
 | ||||
| 		solAssert(!functionType->takesArbitraryParameters(), ""); | ||||
| 
 | ||||
|  | ||||
| @ -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 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user