about summary refs log tree commit diff
path: root/src/comp/syntax/parse
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2012-02-10 09:50:16 +0100
committerMarijn Haverbeke <marijnh@gmail.com>2012-02-10 09:50:16 +0100
commita681628bd4faf9135f0764b3f1f1fdcafc491de6 (patch)
treea2c6e007dacbce48b8adf7aeeba4a02ea8d0a632 /src/comp/syntax/parse
parentd493438c9805ff82b45aa5c40941c05311794130 (diff)
downloadrust-a681628bd4faf9135f0764b3f1f1fdcafc491de6.tar.gz
rust-a681628bd4faf9135f0764b3f1f1fdcafc491de6.zip
Output meaningful lexer error when no digits given for number
Closes #1802
Diffstat (limited to 'src/comp/syntax/parse')
-rw-r--r--src/comp/syntax/parse/lexer.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/comp/syntax/parse/lexer.rs b/src/comp/syntax/parse/lexer.rs
index 053a828f07a..42cc5400b0c 100644
--- a/src/comp/syntax/parse/lexer.rs
+++ b/src/comp/syntax/parse/lexer.rs
@@ -220,6 +220,9 @@ fn scan_number(c: char, rdr: reader) -> token::token {
             tp = if signed { either::left(ast::ty_i64) }
                       else { either::right(ast::ty_u64) };
         }
+        if str::byte_len(num_str) == 0u {
+            rdr.fatal("no valid digits found for number");
+        }
         let parsed = u64::from_str(num_str, base as u64);
         alt tp {
           either::left(t) { ret token::LIT_INT(parsed as i64, t); }
@@ -264,6 +267,9 @@ fn scan_number(c: char, rdr: reader) -> token::token {
         ret token::LIT_FLOAT(interner::intern(*rdr.interner, num_str),
                              ast::ty_f);
     } else {
+        if str::byte_len(num_str) == 0u {
+            rdr.fatal("no valid digits found for number");
+        }
         let parsed = u64::from_str(num_str, base as u64);
         ret token::LIT_INT(parsed as i64, ast::ty_i);
     }