Fix scoping of event arguments.

This commit is contained in:
Christian 2015-01-31 16:50:33 +01:00
parent 6c8b5cabdc
commit 4e440b6e5d
3 changed files with 19 additions and 13 deletions

2
AST.h
View File

@ -471,7 +471,7 @@ private:
/** /**
* Definition of a (loggable) event. * Definition of a (loggable) event.
*/ */
class EventDefinition: public Declaration, public Documented class EventDefinition: public Declaration, public VariableScope, public Documented
{ {
public: public:
EventDefinition(Location const& _location, EventDefinition(Location const& _location,

View File

@ -263,10 +263,15 @@ bool DeclarationRegistrationHelper::visit(VariableDeclaration& _declaration)
bool DeclarationRegistrationHelper::visit(EventDefinition& _event) bool DeclarationRegistrationHelper::visit(EventDefinition& _event)
{ {
registerDeclaration(_event, false); registerDeclaration(_event, true);
return true; return true;
} }
void DeclarationRegistrationHelper::endVisit(EventDefinition&)
{
closeCurrentScope();
}
void DeclarationRegistrationHelper::enterNewSubScope(Declaration const& _declaration) void DeclarationRegistrationHelper::enterNewSubScope(Declaration const& _declaration)
{ {
map<ASTNode const*, DeclarationContainer>::iterator iter; map<ASTNode const*, DeclarationContainer>::iterator iter;

View File

@ -94,17 +94,18 @@ public:
DeclarationRegistrationHelper(std::map<ASTNode const*, DeclarationContainer>& _scopes, ASTNode& _astRoot); DeclarationRegistrationHelper(std::map<ASTNode const*, DeclarationContainer>& _scopes, ASTNode& _astRoot);
private: private:
bool visit(ContractDefinition& _contract); bool visit(ContractDefinition& _contract) override;
void endVisit(ContractDefinition& _contract); void endVisit(ContractDefinition& _contract) override;
bool visit(StructDefinition& _struct); bool visit(StructDefinition& _struct) override;
void endVisit(StructDefinition& _struct); void endVisit(StructDefinition& _struct) override;
bool visit(FunctionDefinition& _function); bool visit(FunctionDefinition& _function) override;
void endVisit(FunctionDefinition& _function); void endVisit(FunctionDefinition& _function) override;
bool visit(ModifierDefinition& _modifier); bool visit(ModifierDefinition& _modifier) override;
void endVisit(ModifierDefinition& _modifier); void endVisit(ModifierDefinition& _modifier) override;
void endVisit(VariableDefinition& _variableDefinition); void endVisit(VariableDefinition& _variableDefinition) override;
bool visit(VariableDeclaration& _declaration); bool visit(VariableDeclaration& _declaration) override;
bool visit(EventDefinition& _event); bool visit(EventDefinition& _event) override;
void endVisit(EventDefinition& _event) override;
void enterNewSubScope(Declaration const& _declaration); void enterNewSubScope(Declaration const& _declaration);
void closeCurrentScope(); void closeCurrentScope();