mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #7709 from ethereum/overloadMsgForMagic
Reconstruct function definition for magic variables in overload error message.
This commit is contained in:
		
						commit
						f6191a7183
					
				| @ -2359,6 +2359,17 @@ bool TypeChecker::visit(Identifier const& _identifier) | |||||||
| 				SecondarySourceLocation ssl; | 				SecondarySourceLocation ssl; | ||||||
| 
 | 
 | ||||||
| 				for (Declaration const* declaration: annotation.overloadedDeclarations) | 				for (Declaration const* declaration: annotation.overloadedDeclarations) | ||||||
|  | 					if (declaration->location().isEmpty()) | ||||||
|  | 					{ | ||||||
|  | 						// Try to re-construct function definition
 | ||||||
|  | 						string description; | ||||||
|  | 						for (auto const& param: declaration->functionType(true)->parameterTypes()) | ||||||
|  | 							description += (description.empty() ? "" : ", ") + param->toString(false); | ||||||
|  | 						description = "function " + _identifier.name() + "(" + description + ")"; | ||||||
|  | 
 | ||||||
|  | 						ssl.append("Candidate: " + description, declaration->location()); | ||||||
|  | 					} | ||||||
|  | 					else | ||||||
| 						ssl.append("Candidate:", declaration->location()); | 						ssl.append("Candidate:", declaration->location()); | ||||||
| 				if (candidates.empty()) | 				if (candidates.empty()) | ||||||
| 					m_errorReporter.fatalTypeError(_identifier.location(), ssl, "No matching declaration found after argument-dependent lookup."); | 					m_errorReporter.fatalTypeError(_identifier.location(), ssl, "No matching declaration found after argument-dependent lookup."); | ||||||
|  | |||||||
							
								
								
									
										5
									
								
								test/cmdlineTests/require_overload/err
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								test/cmdlineTests/require_overload/err
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | |||||||
|  | require_overload/input.sol:4:9: Error: No matching declaration found after argument-dependent lookup. | ||||||
|  |         require(this); | ||||||
|  |         ^-----^ | ||||||
|  | Candidate: function require(bool) | ||||||
|  | Candidate: function require(bool, string memory) | ||||||
							
								
								
									
										1
									
								
								test/cmdlineTests/require_overload/exit
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								test/cmdlineTests/require_overload/exit
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | 1 | ||||||
							
								
								
									
										6
									
								
								test/cmdlineTests/require_overload/input.sol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								test/cmdlineTests/require_overload/input.sol
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | pragma solidity >=0.0; | ||||||
|  | contract C { | ||||||
|  |     function f() public pure { | ||||||
|  |         require(this); | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user