auto merge of #5811 : sanxiyn/rust/parse-uint, r=catamorphism

It does not handle signs.
This commit is contained in:
bors 2013-04-11 00:31:03 -07:00
commit c27fad7353

View file

@ -171,7 +171,7 @@ fn parse_vstore(st: @mut PState) -> ty::vstore {
let c = peek(st); let c = peek(st);
if '0' <= c && c <= '9' { if '0' <= c && c <= '9' {
let n = parse_int(st) as uint; let n = parse_uint(st);
assert!(next(st) == '|'); assert!(next(st) == '|');
return ty::vstore_fixed(n); return ty::vstore_fixed(n);
} }
@ -214,13 +214,13 @@ fn parse_bound_region(st: @mut PState) -> ty::bound_region {
match next(st) { match next(st) {
's' => ty::br_self, 's' => ty::br_self,
'a' => { 'a' => {
let id = parse_int(st) as uint; let id = parse_uint(st);
assert!(next(st) == '|'); assert!(next(st) == '|');
ty::br_anon(id) ty::br_anon(id)
} }
'[' => ty::br_named(st.tcx.sess.ident_of(parse_str(st, ']'))), '[' => ty::br_named(st.tcx.sess.ident_of(parse_str(st, ']'))),
'c' => { 'c' => {
let id = parse_int(st); let id = parse_uint(st) as int;
assert!(next(st) == '|'); assert!(next(st) == '|');
ty::br_cap_avoid(id, @parse_bound_region(st)) ty::br_cap_avoid(id, @parse_bound_region(st))
}, },
@ -235,14 +235,14 @@ fn parse_region(st: @mut PState) -> ty::Region {
} }
'f' => { 'f' => {
assert!(next(st) == '['); assert!(next(st) == '[');
let id = parse_int(st); let id = parse_uint(st) as int;
assert!(next(st) == '|'); assert!(next(st) == '|');
let br = parse_bound_region(st); let br = parse_bound_region(st);
assert!(next(st) == ']'); assert!(next(st) == ']');
ty::re_free(id, br) ty::re_free(id, br)
} }
's' => { 's' => {
let id = parse_int(st); let id = parse_uint(st) as int;
assert!(next(st) == '|'); assert!(next(st) == '|');
ty::re_scope(id) ty::re_scope(id)
} }
@ -318,7 +318,7 @@ fn parse_ty(st: @mut PState, conv: conv_did) -> ty::t {
'p' => { 'p' => {
let did = parse_def(st, TypeParameter, conv); let did = parse_def(st, TypeParameter, conv);
debug!("parsed ty_param: did=%?", did); debug!("parsed ty_param: did=%?", did);
return ty::mk_param(st.tcx, parse_int(st) as uint, did); return ty::mk_param(st.tcx, parse_uint(st), did);
} }
's' => { 's' => {
let did = parse_def(st, TypeParameter, conv); let did = parse_def(st, TypeParameter, conv);
@ -413,14 +413,14 @@ fn parse_def(st: @mut PState, source: DefIdSource,
return conv(source, parse_def_id(def)); return conv(source, parse_def_id(def));
} }
fn parse_int(st: @mut PState) -> int { fn parse_uint(st: @mut PState) -> uint {
let mut n = 0; let mut n = 0;
loop { loop {
let cur = peek(st); let cur = peek(st);
if cur < '0' || cur > '9' { return n; } if cur < '0' || cur > '9' { return n; }
st.pos = st.pos + 1u; st.pos = st.pos + 1u;
n *= 10; n *= 10;
n += (cur as int) - ('0' as int); n += (cur as uint) - ('0' as uint);
}; };
} }