Display nicer error messages in the parser (display tokens and not internal names)

This commit is contained in:
Alex Beregszaszi 2018-04-17 13:28:47 +01:00
parent 81d61ca086
commit e3279d8af8
2 changed files with 12 additions and 11 deletions

View File

@ -4,6 +4,7 @@ Features:
* Build System: Update internal dependency of jsoncpp to 1.8.4, which introduces more strictness and reduces memory usage.
* Code Generator: Use native shift instructions on target Constantinople.
* Optimizer: Remove unnecessary masking of the result of known short instructions (``ADDRESS``, ``CALLER``, ``ORIGIN`` and ``COINBASE``).
* Parser: Display nicer error messages by showing the actual tokens and not internal names.
* Type Checker: Deprecate the ``years`` unit denomination and raise a warning for it (or an error as experimental 0.5.0 feature).
* Type Checker: Make literals (without explicit type casting) an error for tight packing as experimental 0.5.0 feature.

View File

@ -71,10 +71,10 @@ void ParserBase::expectToken(Token::Value _value, bool _advance)
if (Token::isReservedKeyword(tok))
{
fatalParserError(
string("Expected token ") +
string(Token::name(_value)) +
string(" got reserved keyword '") +
string(Token::name(tok)) +
string("Expected '") +
string(Token::toString(_value)) +
string("' but got reserved keyword '") +
string(Token::toString(tok)) +
string("'")
);
}
@ -82,19 +82,19 @@ void ParserBase::expectToken(Token::Value _value, bool _advance)
{
ElementaryTypeNameToken elemTypeName = m_scanner->currentElementaryTypeNameToken();
fatalParserError(
string("Expected token ") +
string(Token::name(_value)) +
string(" got '") +
string("Expected '") +
string(Token::toString(_value)) +
string("' but got '") +
elemTypeName.toString() +
string("'")
);
}
else
fatalParserError(
string("Expected token ") +
string(Token::name(_value)) +
string(" got '") +
string(Token::name(m_scanner->currentToken())) +
string("Expected '") +
string(Token::toString(_value)) +
string("' but got '") +
string(Token::toString(m_scanner->currentToken())) +
string("'")
);
}