diff options
author | chriseth <chris@ethereum.org> | 2016-09-06 21:52:44 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-06 21:52:44 +0800 |
commit | 462fc84e530a6e740dfc8bb92bbd5ba82862cbb2 (patch) | |
tree | f55c4e97d89427aaecb0b77898a3e808342da215 /libsolidity/parsing | |
parent | 358812569287976001ee1f6cec077038d3fcc937 (diff) | |
parent | a13c5b315705dffde48ef46b8ed1208e3aa32989 (diff) | |
download | dexon-solidity-462fc84e530a6e740dfc8bb92bbd5ba82862cbb2.tar.gz dexon-solidity-462fc84e530a6e740dfc8bb92bbd5ba82862cbb2.tar.zst dexon-solidity-462fc84e530a6e740dfc8bb92bbd5ba82862cbb2.zip |
Merge pull request #1016 from ethereum/reserved
Report the usage of reserved keywords more nicely
Diffstat (limited to 'libsolidity/parsing')
-rw-r--r-- | libsolidity/parsing/ParserBase.cpp | 12 | ||||
-rw-r--r-- | libsolidity/parsing/Token.h | 1 |
2 files changed, 12 insertions, 1 deletions
diff --git a/libsolidity/parsing/ParserBase.cpp b/libsolidity/parsing/ParserBase.cpp index 71085a4d..2abf58cc 100644 --- a/libsolidity/parsing/ParserBase.cpp +++ b/libsolidity/parsing/ParserBase.cpp @@ -47,7 +47,17 @@ void ParserBase::expectToken(Token::Value _value) Token::Value tok = m_scanner->currentToken(); if (tok != _value) { - if (Token::isElementaryTypeName(tok)) //for the sake of accuracy in reporting + if (Token::isReservedKeyword(tok)) + { + 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( diff --git a/libsolidity/parsing/Token.h b/libsolidity/parsing/Token.h index 2bf7419e..5dd42992 100644 --- a/libsolidity/parsing/Token.h +++ b/libsolidity/parsing/Token.h @@ -293,6 +293,7 @@ public: static bool isLocationSpecifier(Value op) { return op == Memory || op == Storage; } static bool isEtherSubdenomination(Value op) { return op == SubWei || op == SubSzabo || op == SubFinney || op == SubEther; } static bool isTimeSubdenomination(Value op) { return op == SubSecond || op == SubMinute || op == SubHour || op == SubDay || op == SubWeek || op == SubYear; } + static bool isReservedKeyword(Value op) { return (Abstract <= op && op <= TypeOf); } // @returns a string corresponding to the JS token string // (.e., "<" for the token LT) or NULL if the token doesn't |