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(), ""); | 			solAssert(functionDef->isImplemented(), ""); | ||||||
| 		} | 		} | ||||||
| 		else |  | ||||||
| 			solAssert(!functionType->hasDeclaration(), ""); |  | ||||||
| 
 | 
 | ||||||
| 		solAssert(!functionType->takesArbitraryParameters(), ""); | 		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