mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Implement overridding of functions by public variables
This commit is contained in:
committed by
Mathias Baumann
parent
52467108ac
commit
b7d5de59c5
@@ -346,9 +346,21 @@ void NameAndTypeResolver::importInheritedScope(ContractDefinition const& _base)
|
||||
solAssert(conflictingDeclaration, "");
|
||||
|
||||
// Usual shadowing is not an error
|
||||
if (dynamic_cast<ModifierDefinition const*>(declaration) && dynamic_cast<ModifierDefinition const*>(conflictingDeclaration))
|
||||
if (
|
||||
dynamic_cast<ModifierDefinition const*>(declaration) &&
|
||||
dynamic_cast<ModifierDefinition const*>(conflictingDeclaration)
|
||||
)
|
||||
continue;
|
||||
|
||||
// Public state variable can override functions
|
||||
if (auto varDecl = dynamic_cast<VariableDeclaration const*>(conflictingDeclaration))
|
||||
if (
|
||||
dynamic_cast<FunctionDefinition const*>(declaration) &&
|
||||
varDecl->isStateVariable() &&
|
||||
varDecl->isPublic()
|
||||
)
|
||||
continue;
|
||||
|
||||
if (declaration->location().start < conflictingDeclaration->location().start)
|
||||
{
|
||||
firstDeclarationLocation = declaration->location();
|
||||
|
||||
Reference in New Issue
Block a user