From f8da9a8fd5e2c709aa940402155faa30139ec9e1 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Wed, 15 Feb 2017 11:40:29 +0000 Subject: Factor out tokenToContractKind --- libsolidity/parsing/Parser.cpp | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) (limited to 'libsolidity/parsing/Parser.cpp') diff --git a/libsolidity/parsing/Parser.cpp b/libsolidity/parsing/Parser.cpp index 4cf6f0a6..b5130c8a 100644 --- a/libsolidity/parsing/Parser.cpp +++ b/libsolidity/parsing/Parser.cpp @@ -194,28 +194,30 @@ ASTPointer Parser::parseImportDirective() return nodeFactory.createNode(path, unitAlias, move(symbolAliases)); } -ASTPointer Parser::parseContractDefinition(Token::Value _expectedKind) +ContractDefinition::ContractKind Parser::tokenToContractKind(Token::Value _token) { - ASTNodeFactory nodeFactory(*this); - ASTPointer docString; - if (m_scanner->currentCommentLiteral() != "") - docString = make_shared(m_scanner->currentCommentLiteral()); - expectToken(_expectedKind); - ContractDefinition::ContractKind contractKind; - switch(_expectedKind) + switch(_token) { case Token::Interface: - contractKind = ContractDefinition::ContractKind::Interface; - break; + return ContractDefinition::ContractKind::Interface; case Token::Contract: - contractKind = ContractDefinition::ContractKind::Contract; - break; + return ContractDefinition::ContractKind::Contract; case Token::Library: - contractKind = ContractDefinition::ContractKind::Library; - break; + return ContractDefinition::ContractKind::Library; default: fatalParserError("Unsupported contract type."); } + // FIXME: fatalParserError is not considered as throwing here + return ContractDefinition::ContractKind::Contract; +} + +ASTPointer Parser::parseContractDefinition(Token::Value _expectedKind) +{ + ASTNodeFactory nodeFactory(*this); + ASTPointer docString; + if (m_scanner->currentCommentLiteral() != "") + docString = make_shared(m_scanner->currentCommentLiteral()); + expectToken(_expectedKind); ASTPointer name = expectIdentifierToken(); vector> baseContracts; if (m_scanner->currentToken() == Token::Is) @@ -268,7 +270,7 @@ ASTPointer Parser::parseContractDefinition(Token::Value _exp docString, baseContracts, subNodes, - contractKind + tokenToContractKind(_expectedKind) ); } -- cgit v1.2.3