Make the various from_str functions return options
So that they can be used with user input without causing task failures. Closes #1335
This commit is contained in:
@@ -301,7 +301,7 @@ fn lit_to_const(lit: @lit) -> const_val {
|
||||
lit_str(s) { const_str(s) }
|
||||
lit_int(n, _) { const_int(n) }
|
||||
lit_uint(n, _) { const_uint(n) }
|
||||
lit_float(n, _) { const_float(float::from_str(n)) }
|
||||
lit_float(n, _) { const_float(option::get(float::from_str(n))) }
|
||||
lit_nil { const_int(0i64) }
|
||||
lit_bool(b) { const_int(b as i64) }
|
||||
}
|
||||
|
||||
@@ -174,8 +174,8 @@ fn scan_digits(rdr: reader, radix: uint) -> str {
|
||||
while true {
|
||||
let c = rdr.curr;
|
||||
if c == '_' { rdr.bump(); cont; }
|
||||
alt char::maybe_digit(c) {
|
||||
some(d) if (d as uint) < radix {
|
||||
alt char::to_digit(c, radix) {
|
||||
some(d) {
|
||||
str::push_char(rslt, c);
|
||||
rdr.bump();
|
||||
}
|
||||
@@ -229,7 +229,7 @@ fn scan_number(c: char, rdr: reader) -> token::token {
|
||||
if str::len_bytes(num_str) == 0u {
|
||||
rdr.fatal("no valid digits found for number");
|
||||
}
|
||||
let parsed = u64::from_str(num_str, base as u64);
|
||||
let parsed = option::get(u64::from_str(num_str, base as u64));
|
||||
alt tp {
|
||||
either::left(t) { ret token::LIT_INT(parsed as i64, t); }
|
||||
either::right(t) { ret token::LIT_UINT(parsed, t); }
|
||||
@@ -276,7 +276,7 @@ fn scan_number(c: char, rdr: reader) -> token::token {
|
||||
if str::len_bytes(num_str) == 0u {
|
||||
rdr.fatal("no valid digits found for number");
|
||||
}
|
||||
let parsed = u64::from_str(num_str, base as u64);
|
||||
let parsed = option::get(u64::from_str(num_str, base as u64));
|
||||
ret token::LIT_INT(parsed as i64, ast::ty_i);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user