aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/parsing/ParserBase.cpp
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-05-09 17:06:23 +0800
committerGitHub <noreply@github.com>2018-05-09 17:06:23 +0800
commit54aa10ce367297a4b4f5ae3513dbe8c715e9fb88 (patch)
treece5ad2cf32e2118ae92191ec648a1f522d1255c0 /libsolidity/parsing/ParserBase.cpp
parentc79351efb05be08f3f1797c8cf6ff50988b74763 (diff)
parent840ed1e88a8d70bdbc541a1330654cb1e730e298 (diff)
downloaddexon-solidity-54aa10ce367297a4b4f5ae3513dbe8c715e9fb88.tar
dexon-solidity-54aa10ce367297a4b4f5ae3513dbe8c715e9fb88.tar.gz
dexon-solidity-54aa10ce367297a4b4f5ae3513dbe8c715e9fb88.tar.bz2
dexon-solidity-54aa10ce367297a4b4f5ae3513dbe8c715e9fb88.tar.lz
dexon-solidity-54aa10ce367297a4b4f5ae3513dbe8c715e9fb88.tar.xz
dexon-solidity-54aa10ce367297a4b4f5ae3513dbe8c715e9fb88.tar.zst
dexon-solidity-54aa10ce367297a4b4f5ae3513dbe8c715e9fb88.zip
Merge pull request #4054 from ethereum/token-names
Improve parser error messages
Diffstat (limited to 'libsolidity/parsing/ParserBase.cpp')
-rw-r--r--libsolidity/parsing/ParserBase.cpp45
1 files changed, 17 insertions, 28 deletions
diff --git a/libsolidity/parsing/ParserBase.cpp b/libsolidity/parsing/ParserBase.cpp
index 617a1779..d0c7a551 100644
--- a/libsolidity/parsing/ParserBase.cpp
+++ b/libsolidity/parsing/ParserBase.cpp
@@ -68,35 +68,24 @@ void ParserBase::expectToken(Token::Value _value, bool _advance)
Token::Value tok = m_scanner->currentToken();
if (tok != _value)
{
- if (Token::isReservedKeyword(tok))
+ auto tokenName = [this](Token::Value _token)
{
- fatalParserError(
- string("Expected token ") +
- string(Token::name(_value)) +
- string(" got reserved keyword '") +
- string(Token::name(tok)) +
- string("'")
- );
- }
- else if (Token::isElementaryTypeName(tok)) //for the sake of accuracy in reporting
- {
- ElementaryTypeNameToken elemTypeName = m_scanner->currentElementaryTypeNameToken();
- fatalParserError(
- string("Expected token ") +
- string(Token::name(_value)) +
- string(" got '") +
- elemTypeName.toString() +
- string("'")
- );
- }
- else
- fatalParserError(
- string("Expected token ") +
- string(Token::name(_value)) +
- string(" got '") +
- string(Token::name(m_scanner->currentToken())) +
- string("'")
- );
+ if (_token == Token::Identifier)
+ return string("identifier");
+ else if (_token == Token::EOS)
+ return string("end of source");
+ else if (Token::isReservedKeyword(_token))
+ return string("reserved keyword '") + Token::friendlyName(_token) + "'";
+ else if (Token::isElementaryTypeName(_token)) //for the sake of accuracy in reporting
+ {
+ ElementaryTypeNameToken elemTypeName = m_scanner->currentElementaryTypeNameToken();
+ return string("'") + elemTypeName.toString() + "'";
+ }
+ else
+ return string("'") + Token::friendlyName(_token) + "'";
+ };
+
+ fatalParserError(string("Expected ") + tokenName(_value) + string(" but got ") + tokenName(tok));
}
if (_advance)
m_scanner->next();