diff options
author | Christian <c@ethdev.com> | 2015-01-31 23:50:33 +0800 |
---|---|---|
committer | Christian <c@ethdev.com> | 2015-01-31 23:50:33 +0800 |
commit | 4e440b6e5da8cb1122342377156f3706300f98c7 (patch) | |
tree | a43d94498131cc0e5846f013f3e01023a67dce39 | |
parent | 6c8b5cabdc9e3f48d95e945d093a480c2ab5032e (diff) | |
download | dexon-solidity-4e440b6e5da8cb1122342377156f3706300f98c7.tar dexon-solidity-4e440b6e5da8cb1122342377156f3706300f98c7.tar.gz dexon-solidity-4e440b6e5da8cb1122342377156f3706300f98c7.tar.bz2 dexon-solidity-4e440b6e5da8cb1122342377156f3706300f98c7.tar.lz dexon-solidity-4e440b6e5da8cb1122342377156f3706300f98c7.tar.xz dexon-solidity-4e440b6e5da8cb1122342377156f3706300f98c7.tar.zst dexon-solidity-4e440b6e5da8cb1122342377156f3706300f98c7.zip |
Fix scoping of event arguments.
-rwxr-xr-x | AST.h | 2 | ||||
-rw-r--r-- | NameAndTypeResolver.cpp | 7 | ||||
-rw-r--r-- | NameAndTypeResolver.h | 23 |
3 files changed, 19 insertions, 13 deletions
@@ -471,7 +471,7 @@ private: /** * Definition of a (loggable) event. */ -class EventDefinition: public Declaration, public Documented +class EventDefinition: public Declaration, public VariableScope, public Documented { public: EventDefinition(Location const& _location, diff --git a/NameAndTypeResolver.cpp b/NameAndTypeResolver.cpp index 75df637c..7dc42bc6 100644 --- a/NameAndTypeResolver.cpp +++ b/NameAndTypeResolver.cpp @@ -263,10 +263,15 @@ bool DeclarationRegistrationHelper::visit(VariableDeclaration& _declaration) bool DeclarationRegistrationHelper::visit(EventDefinition& _event) { - registerDeclaration(_event, false); + registerDeclaration(_event, true); return true; } +void DeclarationRegistrationHelper::endVisit(EventDefinition&) +{ + closeCurrentScope(); +} + void DeclarationRegistrationHelper::enterNewSubScope(Declaration const& _declaration) { map<ASTNode const*, DeclarationContainer>::iterator iter; diff --git a/NameAndTypeResolver.h b/NameAndTypeResolver.h index 4555491f..4b7ce6e7 100644 --- a/NameAndTypeResolver.h +++ b/NameAndTypeResolver.h @@ -94,17 +94,18 @@ public: DeclarationRegistrationHelper(std::map<ASTNode const*, DeclarationContainer>& _scopes, ASTNode& _astRoot); private: - bool visit(ContractDefinition& _contract); - void endVisit(ContractDefinition& _contract); - bool visit(StructDefinition& _struct); - void endVisit(StructDefinition& _struct); - bool visit(FunctionDefinition& _function); - void endVisit(FunctionDefinition& _function); - bool visit(ModifierDefinition& _modifier); - void endVisit(ModifierDefinition& _modifier); - void endVisit(VariableDefinition& _variableDefinition); - bool visit(VariableDeclaration& _declaration); - bool visit(EventDefinition& _event); + bool visit(ContractDefinition& _contract) override; + void endVisit(ContractDefinition& _contract) override; + bool visit(StructDefinition& _struct) override; + void endVisit(StructDefinition& _struct) override; + bool visit(FunctionDefinition& _function) override; + void endVisit(FunctionDefinition& _function) override; + bool visit(ModifierDefinition& _modifier) override; + void endVisit(ModifierDefinition& _modifier) override; + void endVisit(VariableDefinition& _variableDefinition) override; + bool visit(VariableDeclaration& _declaration) override; + bool visit(EventDefinition& _event) override; + void endVisit(EventDefinition& _event) override; void enterNewSubScope(Declaration const& _declaration); void closeCurrentScope(); |