aboutsummaryrefslogtreecommitdiffstats
path: root/test/libsolidity/SolidityScanner.cpp
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-09-06 17:05:35 +0800
committerchriseth <chris@ethereum.org>2018-09-10 18:28:34 +0800
commitc0d9b492a23537e99495ff84a4a24f55ebd9ebc7 (patch)
tree613eff0771b707d4f1847310eef28adb1d05c3e3 /test/libsolidity/SolidityScanner.cpp
parent65a439b0fbbd3723f9b6a456cbb9927b3ab5d121 (diff)
downloaddexon-solidity-c0d9b492a23537e99495ff84a4a24f55ebd9ebc7.tar
dexon-solidity-c0d9b492a23537e99495ff84a4a24f55ebd9ebc7.tar.gz
dexon-solidity-c0d9b492a23537e99495ff84a4a24f55ebd9ebc7.tar.bz2
dexon-solidity-c0d9b492a23537e99495ff84a4a24f55ebd9ebc7.tar.lz
dexon-solidity-c0d9b492a23537e99495ff84a4a24f55ebd9ebc7.tar.xz
dexon-solidity-c0d9b492a23537e99495ff84a4a24f55ebd9ebc7.tar.zst
dexon-solidity-c0d9b492a23537e99495ff84a4a24f55ebd9ebc7.zip
This fixes several bugs with regards to line breaks and comments:
- any unicode line break (line feed, vertical tab, form feed, carriage return, NEL, LS and PS) is considered to terminate a single-line comment. The line break itself is considered to be the next token after the comment, leading to a parser error if it is not an ascii character (i.e. for NEL, LS and PS). - unterminated multiline comments are considered illegal tokens - '/** /' is considered an unterminated multiline comment (previously, whitespace was allowed before the last '/'
Diffstat (limited to 'test/libsolidity/SolidityScanner.cpp')
-rw-r--r--test/libsolidity/SolidityScanner.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/test/libsolidity/SolidityScanner.cpp b/test/libsolidity/SolidityScanner.cpp
index 020bce7f..e216ef01 100644
--- a/test/libsolidity/SolidityScanner.cpp
+++ b/test/libsolidity/SolidityScanner.cpp
@@ -393,6 +393,14 @@ BOOST_AUTO_TEST_CASE(invalid_hex_literal_nonhex_string)
BOOST_CHECK_EQUAL(scanner.next(), Token::Illegal);
}
+BOOST_AUTO_TEST_CASE(invalid_multiline_comment_close)
+{
+ // This used to parse as "comment", "identifier"
+ Scanner scanner(CharStream("/** / x"));
+ BOOST_CHECK_EQUAL(scanner.currentToken(), Token::Illegal);
+ BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
+}
+
BOOST_AUTO_TEST_SUITE_END()