mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Disallow calling base constructors without arguments.
This commit is contained in:
		
							parent
							
								
									ef269bf40d
								
							
						
					
					
						commit
						7e5406dd89
					
				| @ -39,6 +39,7 @@ Breaking Changes: | ||||
|  * Type Checker: Disallow values for constants that are not compile-time constants. This was already the case in the experimental 0.5.0 mode. | ||||
|  * Type Checker: Disallow arithmetic operations for boolean variables. | ||||
|  * Type Checker: Disallow tight packing of literals. This was already the case in the experimental 0.5.0 mode. | ||||
|  * Type Checker: Disallow calling base constructors without parentheses. This was already the case in the experimental 0.5.0 mode. | ||||
|  * Type Checker: Disallow conversions between ``bytesX`` and ``uintY`` of different size. | ||||
|  * Type Checker: Disallow conversions between unrelated contract types. Explicit conversion via ``address`` can still achieve it. | ||||
|  * Type Checker: Disallow empty tuple components. This was partly already the case in the experimental 0.5.0 mode. | ||||
|  | ||||
| @ -279,8 +279,6 @@ void TypeChecker::checkContractAbstractFunctions(ContractDefinition const& _cont | ||||
| 
 | ||||
| void TypeChecker::checkContractBaseConstructorArguments(ContractDefinition const& _contract) | ||||
| { | ||||
| 	bool const v050 = _contract.sourceUnit().annotation().experimentalFeatures.count(ExperimentalFeature::V050); | ||||
| 
 | ||||
| 	vector<ContractDefinition const*> const& bases = _contract.annotation().linearizedBaseContracts; | ||||
| 
 | ||||
| 	// Determine the arguments that are used for the base constructors.
 | ||||
| @ -296,18 +294,10 @@ void TypeChecker::checkContractBaseConstructorArguments(ContractDefinition const | ||||
| 						annotateBaseConstructorArguments(_contract, baseContract->constructor(), modifier.get()); | ||||
| 				} | ||||
| 				else | ||||
| 				{ | ||||
| 					if (v050) | ||||
| 					m_errorReporter.declarationError( | ||||
| 						modifier->location(), | ||||
| 						"Modifier-style base constructor call without arguments." | ||||
| 					); | ||||
| 					else | ||||
| 						m_errorReporter.warning( | ||||
| 							modifier->location(), | ||||
| 							"Modifier-style base constructor call without arguments." | ||||
| 						); | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 		for (ASTPointer<InheritanceSpecifier> const& base: contract->baseContracts()) | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| contract A { constructor() public { } } | ||||
| contract B is A { constructor() A public {  } } | ||||
| // ---- | ||||
| // Warning: (72-73): Modifier-style base constructor call without arguments. | ||||
| // DeclarationError: (72-73): Modifier-style base constructor call without arguments. | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user