aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian <c@ethdev.com>2015-01-31 23:50:33 +0800
committerChristian <c@ethdev.com>2015-01-31 23:50:33 +0800
commit4e440b6e5da8cb1122342377156f3706300f98c7 (patch)
treea43d94498131cc0e5846f013f3e01023a67dce39
parent6c8b5cabdc9e3f48d95e945d093a480c2ab5032e (diff)
downloaddexon-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-xAST.h2
-rw-r--r--NameAndTypeResolver.cpp7
-rw-r--r--NameAndTypeResolver.h23
3 files changed, 19 insertions, 13 deletions
diff --git a/AST.h b/AST.h
index 113daf72..a3adca79 100755
--- a/AST.h
+++ b/AST.h
@@ -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();