aboutsummaryrefslogtreecommitdiffstats
path: root/Parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Parser.cpp')
-rw-r--r--Parser.cpp23
1 files changed, 11 insertions, 12 deletions
diff --git a/Parser.cpp b/Parser.cpp
index 7ce0f074..d2e888a8 100644
--- a/Parser.cpp
+++ b/Parser.cpp
@@ -222,12 +222,7 @@ ASTPointer<FunctionDefinition> Parser::parseFunctionDefinition(bool _isPublic, A
returnParameters = parseParameterList(permitEmptyParameterList);
}
else
- {
- // create an empty parameter list at a zero-length location
- ASTNodeFactory nodeFactory(*this);
- nodeFactory.setLocationEmpty();
- returnParameters = nodeFactory.createNode<ParameterList>(vector<ASTPointer<VariableDeclaration>>());
- }
+ returnParameters = createEmptyParameterList();
ASTPointer<Block> block = parseBlock();
nodeFactory.setEndPositionFromNode(block);
bool const c_isConstructor = (_contractName && *name == *_contractName);
@@ -285,12 +280,7 @@ ASTPointer<ModifierDefinition> Parser::parseModifierDefinition()
if (m_scanner->getCurrentToken() == Token::LPAREN)
parameters = parseParameterList();
else
- {
- // create an empty parameter list at a zero-length location
- ASTNodeFactory nodeFactory(*this);
- nodeFactory.setLocationEmpty();
- parameters = nodeFactory.createNode<ParameterList>(vector<ASTPointer<VariableDeclaration>>());
- }
+ parameters = createEmptyParameterList();
ASTPointer<Block> block = parseBlock();
nodeFactory.setEndPositionFromNode(block);
return nodeFactory.createNode<ModifierDefinition>(name, docstring, parameters, block);
@@ -308,6 +298,8 @@ ASTPointer<EventDefinition> Parser::parseEventDefinition()
ASTPointer<ParameterList> parameters;
if (m_scanner->getCurrentToken() == Token::LPAREN)
parameters = parseParameterList(true, true);
+ else
+ parameters = createEmptyParameterList();
nodeFactory.markEndPosition();
expectToken(Token::SEMICOLON);
return nodeFactory.createNode<EventDefinition>(name, docstring, parameters);
@@ -771,6 +763,13 @@ ASTPointer<ASTString> Parser::getLiteralAndAdvance()
return identifier;
}
+ASTPointer<ParameterList> Parser::createEmptyParameterList()
+{
+ ASTNodeFactory nodeFactory(*this);
+ nodeFactory.setLocationEmpty();
+ return nodeFactory.createNode<ParameterList>(vector<ASTPointer<VariableDeclaration>>());
+}
+
ParserError Parser::createParserError(string const& _description) const
{
return ParserError() << errinfo_sourceLocation(Location(getPosition(), getPosition(), getSourceName()))