auto merge of #5811 : sanxiyn/rust/parse-uint, r=catamorphism
It does not handle signs.
This commit is contained in:
commit
c27fad7353
1 changed files with 8 additions and 8 deletions
|
@ -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);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue