Skip to content

Commit a681628

Browse files
committed
Output meaningful lexer error when no digits given for number
Closes #1802
1 parent d493438 commit a681628

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

src/comp/syntax/parse/lexer.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,9 @@ fn scan_number(c: char, rdr: reader) -> token::token {
220220
tp = if signed { either::left(ast::ty_i64) }
221221
else { either::right(ast::ty_u64) };
222222
}
223+
if str::byte_len(num_str) == 0u {
224+
rdr.fatal("no valid digits found for number");
225+
}
223226
let parsed = u64::from_str(num_str, base as u64);
224227
alt tp {
225228
either::left(t) { ret token::LIT_INT(parsed as i64, t); }
@@ -264,6 +267,9 @@ fn scan_number(c: char, rdr: reader) -> token::token {
264267
ret token::LIT_FLOAT(interner::intern(*rdr.interner, num_str),
265268
ast::ty_f);
266269
} else {
270+
if str::byte_len(num_str) == 0u {
271+
rdr.fatal("no valid digits found for number");
272+
}
267273
let parsed = u64::from_str(num_str, base as u64);
268274
ret token::LIT_INT(parsed as i64, ast::ty_i);
269275
}

0 commit comments

Comments
 (0)