about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-06-09 00:53:34 -0700
committerBrian Anderson <banderson@mozilla.com>2012-06-09 00:53:34 -0700
commit21087bf1a5120739dc865e18d4500a16a8a16648 (patch)
treeea4817378faffb5d0971946c0b6da560c14d9d44 /src
parent8fea5260c2f62fe24e9d86b461d5580d3f217952 (diff)
downloadrust-21087bf1a5120739dc865e18d4500a16a8a16648.tar.gz
rust-21087bf1a5120739dc865e18d4500a16a8a16648.zip
syntax: Intern @strs instead of strs
Diffstat (limited to 'src')
-rw-r--r--src/libsyntax/parse.rs4
-rw-r--r--src/libsyntax/parse/comments.rs5
-rw-r--r--src/libsyntax/parse/lexer.rs18
-rw-r--r--src/libsyntax/parse/parser.rs4
-rw-r--r--src/libsyntax/parse/token.rs8
5 files changed, 21 insertions, 18 deletions
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>(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<str>
+    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<str>) -> 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::<str>(*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::<str>(*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<str>, 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<str>, 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::<str>(in, s) +
+        ret *interner::get(in, s) +
             ast_util::float_ty_to_str(t);
       }
       LIT_STR(s) {
         ret "\""
-            + str::escape_default(interner::get::<str>(in, s))
+            + str::escape_default(*interner::get(in, s))
             + "\"";
       }
       /* Name components */
       IDENT(s, _) {
-        ret interner::get::<str>(in, s);
+        ret *interner::get(in, s);
       }
       UNDERSCORE { ret "_"; }
       EOF { ret "<eof>"; }