aboutsummaryrefslogtreecommitdiffstats
path: root/solidityScanner.cpp
diff options
context:
space:
mode:
authorChristian <c@ethdev.com>2014-11-05 15:40:21 +0800
committerChristian <c@ethdev.com>2014-11-06 09:44:43 +0800
commit08cba0653f781dec66b3211990506066a48390c2 (patch)
tree7f365b55e3add262011c444acdcbb9a5d98c4a21 /solidityScanner.cpp
parentb9cc3baf40f7235b0c4302742f294e6228cff070 (diff)
downloaddexon-solidity-08cba0653f781dec66b3211990506066a48390c2.tar
dexon-solidity-08cba0653f781dec66b3211990506066a48390c2.tar.gz
dexon-solidity-08cba0653f781dec66b3211990506066a48390c2.tar.bz2
dexon-solidity-08cba0653f781dec66b3211990506066a48390c2.tar.lz
dexon-solidity-08cba0653f781dec66b3211990506066a48390c2.tar.xz
dexon-solidity-08cba0653f781dec66b3211990506066a48390c2.tar.zst
dexon-solidity-08cba0653f781dec66b3211990506066a48390c2.zip
Support for negative literals.
Diffstat (limited to 'solidityScanner.cpp')
-rw-r--r--solidityScanner.cpp26
1 files changed, 22 insertions, 4 deletions
diff --git a/solidityScanner.cpp b/solidityScanner.cpp
index d2a960cf..d714699a 100644
--- a/solidityScanner.cpp
+++ b/solidityScanner.cpp
@@ -97,6 +97,27 @@ BOOST_AUTO_TEST_CASE(hex_numbers)
BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
}
+BOOST_AUTO_TEST_CASE(negative_numbers)
+{
+ Scanner scanner(CharStream("var x = -.2 + -0x78 + -7.3 + 8.9;"));
+ BOOST_CHECK_EQUAL(scanner.getCurrentToken(), Token::VAR);
+ BOOST_CHECK_EQUAL(scanner.next(), Token::IDENTIFIER);
+ BOOST_CHECK_EQUAL(scanner.next(), Token::ASSIGN);
+ BOOST_CHECK_EQUAL(scanner.next(), Token::NUMBER);
+ BOOST_CHECK_EQUAL(scanner.getCurrentLiteral(), "-.2");
+ BOOST_CHECK_EQUAL(scanner.next(), Token::ADD);
+ BOOST_CHECK_EQUAL(scanner.next(), Token::NUMBER);
+ BOOST_CHECK_EQUAL(scanner.getCurrentLiteral(), "-0x78");
+ BOOST_CHECK_EQUAL(scanner.next(), Token::ADD);
+ BOOST_CHECK_EQUAL(scanner.next(), Token::NUMBER);
+ BOOST_CHECK_EQUAL(scanner.getCurrentLiteral(), "-7.3");
+ BOOST_CHECK_EQUAL(scanner.next(), Token::ADD);
+ BOOST_CHECK_EQUAL(scanner.next(), Token::NUMBER);
+ BOOST_CHECK_EQUAL(scanner.getCurrentLiteral(), "8.9");
+ BOOST_CHECK_EQUAL(scanner.next(), Token::SEMICOLON);
+ BOOST_CHECK_EQUAL(scanner.next(), Token::EOS);
+}
+
BOOST_AUTO_TEST_CASE(locations)
{
Scanner scanner(CharStream("function_identifier has ; -0x743/*comment*/\n ident //comment"));
@@ -109,11 +130,8 @@ BOOST_AUTO_TEST_CASE(locations)
BOOST_CHECK_EQUAL(scanner.next(), Token::SEMICOLON);
BOOST_CHECK_EQUAL(scanner.getCurrentLocation().start, 24);
BOOST_CHECK_EQUAL(scanner.getCurrentLocation().end, 25);
- BOOST_CHECK_EQUAL(scanner.next(), Token::SUB);
- BOOST_CHECK_EQUAL(scanner.getCurrentLocation().start, 26);
- BOOST_CHECK_EQUAL(scanner.getCurrentLocation().end, 27);
BOOST_CHECK_EQUAL(scanner.next(), Token::NUMBER);
- BOOST_CHECK_EQUAL(scanner.getCurrentLocation().start, 27);
+ BOOST_CHECK_EQUAL(scanner.getCurrentLocation().start, 26);
BOOST_CHECK_EQUAL(scanner.getCurrentLocation().end, 32);
BOOST_CHECK_EQUAL(scanner.next(), Token::IDENTIFIER);
BOOST_CHECK_EQUAL(scanner.getCurrentLocation().start, 45);