diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2012-02-10 09:50:16 +0100 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2012-02-10 09:50:16 +0100 |
| commit | a681628bd4faf9135f0764b3f1f1fdcafc491de6 (patch) | |
| tree | a2c6e007dacbce48b8adf7aeeba4a02ea8d0a632 /src/comp/syntax/parse | |
| parent | d493438c9805ff82b45aa5c40941c05311794130 (diff) | |
| download | rust-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.rs | 6 |
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); } |
