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