diff options
Diffstat (limited to 'Parser.cpp')
-rw-r--r-- | Parser.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
@@ -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())) |