Browse Source

Bugfix: Special case of statements starting with type conversion.

cl-refactor
Christian 10 years ago
parent
commit
edfc06e2c6
  1. 4
      libsolidity/Parser.cpp
  2. 10
      test/solidityParser.cpp

4
libsolidity/Parser.cpp

@ -291,8 +291,8 @@ ASTPointer<Statement> Parser::parseStatement()
// in the case of a user-defined type, we have two identifiers following each other. // in the case of a user-defined type, we have two identifiers following each other.
if (m_scanner->getCurrentToken() == Token::MAPPING || if (m_scanner->getCurrentToken() == Token::MAPPING ||
m_scanner->getCurrentToken() == Token::VAR || m_scanner->getCurrentToken() == Token::VAR ||
Token::isElementaryTypeName(m_scanner->getCurrentToken()) || ((Token::isElementaryTypeName(m_scanner->getCurrentToken()) ||
(m_scanner->getCurrentToken() == Token::IDENTIFIER && m_scanner->getCurrentToken() == Token::IDENTIFIER) &&
m_scanner->peekNextToken() == Token::IDENTIFIER)) m_scanner->peekNextToken() == Token::IDENTIFIER))
statement = parseVariableDefinition(); statement = parseVariableDefinition();
else // "ordinary" expression else // "ordinary" expression

10
test/solidityParser.cpp

@ -211,7 +211,15 @@ BOOST_AUTO_TEST_CASE(else_if_statement)
BOOST_CHECK_NO_THROW(parseText(text)); BOOST_CHECK_NO_THROW(parseText(text));
} }
BOOST_AUTO_TEST_CASE(statement_starting_with_type_conversion)
{
char const* text = "contract test {\n"
" function fun() {\n"
" uint64(2);\n"
" }\n"
"}\n";
BOOST_CHECK_NO_THROW(parseText(text));
}
BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()

Loading…
Cancel
Save