diff --git a/src/libsyntax/parse.rs b/src/libsyntax/parse.rs index 65f7de6ea16..be06360191e 100644 --- a/src/libsyntax/parse.rs +++ b/src/libsyntax/parse.rs @@ -134,7 +134,7 @@ fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg, let filemap = codemap::new_filemap_w_substr (name, ss, source, sess.chpos, sess.byte_pos); sess.cm.files.push(filemap); - let itr = @interner::mk(str::hash, str::eq); + let itr = @interner::mk::<@str>({|x|str::hash(*x)}, {|x,y|str::eq(*x, *y)}); let rdr = lexer::new_reader(sess.span_diagnostic, filemap, itr); ret parser(sess, cfg, rdr, ftype); @@ -152,7 +152,7 @@ fn new_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, +path: str, let src = @copy result::unwrap(res); let filemap = codemap::new_filemap(path, src, sess.chpos, sess.byte_pos); sess.cm.files.push(filemap); - let itr = @interner::mk(str::hash, str::eq); + let itr = @interner::mk::<@str>({|x|str::hash(*x)}, {|x,y|str::eq(*x, *y)}); let rdr = lexer::new_reader(sess.span_diagnostic, filemap, itr); ret parser(sess, cfg, rdr, ftype); } diff --git a/src/libsyntax/parse/comments.rs b/src/libsyntax/parse/comments.rs index 9fa4a4c3e8c..d37d517e7d3 100644 --- a/src/libsyntax/parse/comments.rs +++ b/src/libsyntax/parse/comments.rs @@ -169,7 +169,10 @@ fn gather_comments_and_literals(span_diagnostic: diagnostic::span_handler, srdr: io::reader) -> {cmnts: [cmnt], lits: [lit]} { let src = @str::from_bytes(srdr.read_whole_stream()); - let itr = @interner::mk::(str::hash, str::eq); + let itr = @interner::mk::<@str>( + {|x|str::hash(*x)}, + {|x,y|str::eq(*x, *y)} + ); let rdr = new_reader(span_diagnostic, codemap::new_filemap(path, src, 0u, 0u), itr); let mut comments: [cmnt] = []; diff --git a/src/libsyntax/parse/lexer.rs b/src/libsyntax/parse/lexer.rs index 95831116258..c93680b40a0 100644 --- a/src/libsyntax/parse/lexer.rs +++ b/src/libsyntax/parse/lexer.rs @@ -12,7 +12,7 @@ type reader = @{ mut curr: char, mut chpos: uint, filemap: codemap::filemap, - interner: @interner::interner + interner: @interner::interner<@str> }; impl reader for reader { @@ -55,7 +55,7 @@ impl reader for reader { fn new_reader(span_diagnostic: diagnostic::span_handler, filemap: codemap::filemap, - itr: @interner::interner) -> reader { + itr: @interner::interner<@str>) -> reader { let r = @{span_diagnostic: span_diagnostic, src: filemap.src, mut col: 0u, mut pos: 0u, mut curr: -1 as char, mut chpos: filemap.start_pos.ch, @@ -260,12 +260,12 @@ fn scan_number(c: char, rdr: reader) -> token::token { if c == '3' && n == '2' { rdr.bump(); rdr.bump(); - ret token::LIT_FLOAT(intern(*rdr.interner, num_str), + ret token::LIT_FLOAT(intern(*rdr.interner, @num_str), ast::ty_f32); } else if c == '6' && n == '4' { rdr.bump(); rdr.bump(); - ret token::LIT_FLOAT(intern(*rdr.interner, num_str), + ret token::LIT_FLOAT(intern(*rdr.interner, @num_str), ast::ty_f64); /* FIXME: if this is out of range for either a 32-bit or 64-bit float, it won't be noticed till the back-end (Issue #2252) @@ -275,7 +275,7 @@ fn scan_number(c: char, rdr: reader) -> token::token { } } if is_float { - ret token::LIT_FLOAT(interner::intern(*rdr.interner, num_str), + ret token::LIT_FLOAT(intern(*rdr.interner, @num_str), ast::ty_f); } else { if str::len(num_str) == 0u { @@ -329,8 +329,8 @@ fn next_token_inner(rdr: reader) -> token::token { let is_mod_name = c == ':' && rdr.next() == ':'; // FIXME: perform NFKC normalization here. (Issue #2253) - ret token::IDENT(interner::intern::(*rdr.interner, - accum_str), is_mod_name); + ret token::IDENT(interner::intern(*rdr.interner, + @accum_str), is_mod_name); } if is_dec_digit(c) { ret scan_number(c, rdr); @@ -494,8 +494,8 @@ fn next_token_inner(rdr: reader) -> token::token { } } rdr.bump(); - ret token::LIT_STR(interner::intern::(*rdr.interner, - accum_str)); + ret token::LIT_STR(interner::intern(*rdr.interner, + @accum_str)); } '-' { if rdr.next() == '>' { diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index a6c32f99a72..75dae09fd0d 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -10,7 +10,7 @@ import lexer::reader; import prec::{as_prec, token_to_binop}; import attr::parser_attr; import common::{seq_sep, seq_sep_opt, seq_sep_none, token_to_str}; -import common::{parser_common}; +import common::*;//{parser_common}; import dvec::{dvec, extensions}; export file_type; @@ -151,7 +151,7 @@ class parser { self.sess.span_diagnostic.span_warn(copy self.span, m) } fn get_str(i: token::str_num) -> str { - interner::get(*self.reader.interner, i) + *interner::get(*self.reader.interner, i) } fn get_id() -> node_id { next_node_id(self.sess) } diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index bbbd09632ef..ca11dfa1f9b 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -83,7 +83,7 @@ fn binop_to_str(o: binop) -> str { } } -fn to_str(in: interner, t: token) -> str { +fn to_str(in: interner<@str>, t: token) -> str { alt t { EQ { ret "="; } LT { ret "<"; } @@ -133,17 +133,17 @@ fn to_str(in: interner, t: token) -> str { ret uint::to_str(u as uint, 10u) + ast_util::uint_ty_to_str(t); } LIT_FLOAT(s, t) { - ret interner::get::(in, s) + + ret *interner::get(in, s) + ast_util::float_ty_to_str(t); } LIT_STR(s) { ret "\"" - + str::escape_default(interner::get::(in, s)) + + str::escape_default(*interner::get(in, s)) + "\""; } /* Name components */ IDENT(s, _) { - ret interner::get::(in, s); + ret *interner::get(in, s); } UNDERSCORE { ret "_"; } EOF { ret ""; }