diff options
author | chriseth <chris@ethereum.org> | 2017-01-13 16:36:00 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-13 16:36:00 +0800 |
commit | bde0b40634121e761133ff1d4c28ae7657a46149 (patch) | |
tree | 0108593b65c0650763509f14952e6cc4e18b3506 /libsolidity/analysis/DeclarationContainer.cpp | |
parent | 14703ca002adba39e18f3f0d1aef1cf74b191349 (diff) | |
parent | abc24420a7837557e5160db8af83ea3be5a371c3 (diff) | |
download | dexon-solidity-bde0b40634121e761133ff1d4c28ae7657a46149.tar.gz dexon-solidity-bde0b40634121e761133ff1d4c28ae7657a46149.tar.zst dexon-solidity-bde0b40634121e761133ff1d4c28ae7657a46149.zip |
Merge pull request #1479 from ethereum/function_variable_mixin
Disallow mixin of functions and attributes under the same name
Diffstat (limited to 'libsolidity/analysis/DeclarationContainer.cpp')
-rw-r--r-- | libsolidity/analysis/DeclarationContainer.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/libsolidity/analysis/DeclarationContainer.cpp b/libsolidity/analysis/DeclarationContainer.cpp index 1599b83a..f8c12c5b 100644 --- a/libsolidity/analysis/DeclarationContainer.cpp +++ b/libsolidity/analysis/DeclarationContainer.cpp @@ -44,10 +44,19 @@ Declaration const* DeclarationContainer::conflictingDeclaration( if (dynamic_cast<FunctionDefinition const*>(&_declaration)) { - // check that all other declarations with the same name are functions + // check that all other declarations with the same name are functions or a public state variable for (Declaration const* declaration: declarations) - if (!dynamic_cast<FunctionDefinition const*>(declaration)) + { + if (dynamic_cast<FunctionDefinition const*>(declaration)) + continue; + if (auto variableDeclaration = dynamic_cast<VariableDeclaration const*>(declaration)) + { + if (variableDeclaration->isStateVariable() && !variableDeclaration->isConstant() && variableDeclaration->isPublic()) + continue; return declaration; + } + return declaration; + } } else if (declarations.size() == 1 && declarations.front() == &_declaration) return nullptr; |