Work around bug #2935 by unautounboxing.

This commit is contained in:
Paul Stansifer 2012-07-17 17:05:38 -07:00
parent be3b733c49
commit 4e9c475527
2 changed files with 10 additions and 7 deletions

View File

@ -217,7 +217,7 @@ fn consume_any_line_comment(rdr: string_reader)
bump(rdr);
}
ret some({
tok: token::DOC_COMMENT(rdr.interner.intern(@acc)),
tok: token::DOC_COMMENT((*rdr.interner).intern(@acc)),
sp: ast_util::mk_sp(start_chpos, rdr.chpos)
});
} else {
@ -262,7 +262,7 @@ fn consume_block_comment(rdr: string_reader)
bump(rdr);
bump(rdr);
ret some({
tok: token::DOC_COMMENT(rdr.interner.intern(@acc)),
tok: token::DOC_COMMENT((*rdr.interner).intern(@acc)),
sp: ast_util::mk_sp(start_chpos, rdr.chpos)
});
}
@ -395,11 +395,13 @@ fn scan_number(c: char, rdr: string_reader) -> token::token {
if c == '3' && n == '2' {
bump(rdr);
bump(rdr);
ret token::LIT_FLOAT(rdr.interner.intern(@num_str), ast::ty_f32);
ret token::LIT_FLOAT((*rdr.interner).intern(@num_str),
ast::ty_f32);
} else if c == '6' && n == '4' {
bump(rdr);
bump(rdr);
ret token::LIT_FLOAT(rdr.interner.intern(@num_str), ast::ty_f64);
ret token::LIT_FLOAT((*rdr.interner).intern(@num_str),
ast::ty_f64);
/* FIXME (#2252): if this is out of range for either a
32-bit or 64-bit float, it won't be noticed till the
back-end. */
@ -408,7 +410,7 @@ fn scan_number(c: char, rdr: string_reader) -> token::token {
}
}
if is_float {
ret token::LIT_FLOAT(rdr.interner.intern(@num_str), ast::ty_f);
ret token::LIT_FLOAT((*rdr.interner).intern(@num_str), ast::ty_f);
} else {
if str::len(num_str) == 0u {
rdr.fatal(~"no valid digits found for number");
@ -456,7 +458,7 @@ fn next_token_inner(rdr: string_reader) -> token::token {
let is_mod_name = c == ':' && nextch(rdr) == ':';
// FIXME: perform NFKC normalization here. (Issue #2253)
ret token::IDENT(rdr.interner.intern(@accum_str), is_mod_name);
ret token::IDENT((*rdr.interner).intern(@accum_str), is_mod_name);
}
if is_dec_digit(c) {
ret scan_number(c, rdr);
@ -620,7 +622,7 @@ fn next_token_inner(rdr: string_reader) -> token::token {
}
}
bump(rdr);
ret token::LIT_STR(rdr.interner.intern(@accum_str));
ret token::LIT_STR((*rdr.interner).intern(@accum_str));
}
'-' {
if nextch(rdr) == '>' {

View File

@ -42,5 +42,6 @@ impl <T: const copy> of interner<T> for hash_interner<T> {
// failing to returning a value as items are interned. But for typestate,
// where we first check a pred and then rely on it, ceasing to fail is ok.
pure fn get(idx: uint) -> T { self.vect.get_elt(idx) }
fn len() -> uint { ret self.vect.len(); }
}