From be615d4f2b534a07a24dc444049ab8e342676f76 Mon Sep 17 00:00:00 2001 From: Mathias Baumann Date: Thu, 21 Nov 2019 15:47:10 +0100 Subject: [PATCH] Fix wrong construction of ElementaryTypeNameToken And add an assert to prevent it in the future --- liblangutil/Token.cpp | 3 +++ libsolidity/parsing/Parser.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/liblangutil/Token.cpp b/liblangutil/Token.cpp index b03fa3185..4ac548cf3 100644 --- a/liblangutil/Token.cpp +++ b/liblangutil/Token.cpp @@ -72,6 +72,9 @@ void ElementaryTypeNameToken::assertDetails(Token _baseType, unsigned const& _fi "No elementary type " + string(TokenTraits::toString(_baseType)) + to_string(_first) + "x" + to_string(_second) + "." ); } + else + solAssert(_first == 0 && _second == 0, "Unexpected size arguments"); + m_token = _baseType; m_firstNumber = _first; m_secondNumber = _second; diff --git a/libsolidity/parsing/Parser.cpp b/libsolidity/parsing/Parser.cpp index d9f7aeb5c..f56f72f77 100644 --- a/libsolidity/parsing/Parser.cpp +++ b/libsolidity/parsing/Parser.cpp @@ -1678,7 +1678,7 @@ ASTPointer Parser::parseLeftHandSideExpression( expectToken(Token::Payable); nodeFactory.markEndPosition(); auto expressionType = nodeFactory.createNode( - ElementaryTypeNameToken(Token::Address, 160, 0), + ElementaryTypeNameToken(Token::Address, 0, 0), std::make_optional(StateMutability::Payable) ); expression = nodeFactory.createNode(expressionType);