From 320359547126b1a317d49ed68102d1b6e8be5ca2 Mon Sep 17 00:00:00 2001 From: John Clements Date: Tue, 4 Jun 2013 12:34:25 -0700 Subject: interner just uses uints, not idents with syntax context --- src/libsyntax/ext/base.rs | 6 +++--- src/libsyntax/ext/concat_idents.rs | 4 ++-- src/libsyntax/ext/expand.rs | 14 +++++++------- src/libsyntax/ext/fmt.rs | 30 ++++++++++++++---------------- src/libsyntax/ext/pipes/parse_proto.rs | 10 +++++----- src/libsyntax/ext/quote.rs | 6 +++--- src/libsyntax/ext/tt/macro_parser.rs | 20 ++++++++++---------- src/libsyntax/ext/tt/macro_rules.rs | 8 ++++---- src/libsyntax/ext/tt/transcribe.rs | 15 ++++++++------- 9 files changed, 56 insertions(+), 57 deletions(-) (limited to 'src/libsyntax/ext') diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index bf9f32b6030..97df2c6554e 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -19,7 +19,7 @@ use diagnostic::span_handler; use ext; use parse; use parse::token; -use parse::token::{intern, get_ident_interner}; +use parse::token::{ident_to_str, intern, get_ident_interner, str_to_ident}; use core::hashmap::HashMap; use core::vec; @@ -310,10 +310,10 @@ impl ExtCtxt { *self.trace_mac = x } pub fn str_of(&self, id: ast::ident) -> ~str { - copy *get_ident_interner().get(id) + copy *ident_to_str(id) } pub fn ident_of(&self, st: &str) -> ast::ident { - get_ident_interner().intern(st) + str_to_ident(st) } } diff --git a/src/libsyntax/ext/concat_idents.rs b/src/libsyntax/ext/concat_idents.rs index cdb57adb7bb..d46e0efcd0e 100644 --- a/src/libsyntax/ext/concat_idents.rs +++ b/src/libsyntax/ext/concat_idents.rs @@ -15,7 +15,7 @@ use codemap::span; use ext::base::*; use ext::base; use parse::token; -use parse::token::{get_ident_interner}; +use parse::token::{get_ident_interner, str_to_ident}; pub fn expand_syntax_ext(cx: @ExtCtxt, sp: span, tts: &[ast::token_tree]) -> base::MacResult { @@ -34,7 +34,7 @@ pub fn expand_syntax_ext(cx: @ExtCtxt, sp: span, tts: &[ast::token_tree]) } } } - let res = get_ident_interner().intern(res_str); + let res = str_to_ident(res_str); let e = @ast::expr { id: cx.next_id(), diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 06a03ad5a9b..1e95f62e3e8 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -25,7 +25,7 @@ use ext::base::*; use fold::*; use parse; use parse::{parse_item_from_source_str}; -use parse::token::{get_ident_interner,intern}; +use parse::token::{get_ident_interner, ident_to_str, intern}; use core::vec; @@ -50,7 +50,7 @@ pub fn expand_expr(extsbox: @mut SyntaxEnv, separators")); } let extname = pth.idents[0]; - let extnamestr = get_ident_interner().get(extname); + let extnamestr = ident_to_str(extname); // leaving explicit deref here to highlight unbox op: match (*extsbox).find(&extname.name) { None => { @@ -218,7 +218,7 @@ pub fn expand_item_mac(extsbox: @mut SyntaxEnv, let extname = pth.idents[0]; let interner = get_ident_interner(); - let extnamestr = interner.get(extname); + let extnamestr = ident_to_str(extname); let expanded = match (*extsbox).find(&extname.name) { None => cx.span_fatal(pth.span, fmt!("macro undefined: '%s!'", *extnamestr)), @@ -228,7 +228,7 @@ pub fn expand_item_mac(extsbox: @mut SyntaxEnv, cx.span_fatal(pth.span, fmt!("macro %s! expects no ident argument, \ given '%s'", *extnamestr, - *interner.get(it.ident))); + *ident_to_str(it.ident))); } cx.bt_push(ExpandedFrom(CallInfo { call_site: it.span, @@ -316,7 +316,7 @@ pub fn expand_stmt(extsbox: @mut SyntaxEnv, separators")); } let extname = pth.idents[0]; - let extnamestr = get_ident_interner().get(extname); + let extnamestr = ident_to_str(extname); let (fully_expanded, sp) = match (*extsbox).find(&extname.name) { None => cx.span_fatal(pth.span, fmt!("macro undefined: '%s'", *extnamestr)), @@ -735,7 +735,7 @@ mod test { use codemap; use codemap::spanned; use parse; - use parse::token::{get_ident_interner}; + use parse::token::{gensym, get_ident_interner}; use core::io; use core::option::{None, Some}; use util::parser_testing::{string_to_item_and_sess}; @@ -849,7 +849,7 @@ mod test { }; let table = @mut new_sctable(); let a_name = 100; // enforced by testing_interner - let a2_name = get_ident_interner().gensym("a2").name; + let a2_name = gensym("a2"); let renamer = new_ident_renamer(ast::ident{name:a_name,ctxt:empty_ctxt}, a2_name,table); let renamed_ast = fun_to_ident_folder(renamer).fold_item(item_ast).get(); diff --git a/src/libsyntax/ext/fmt.rs b/src/libsyntax/ext/fmt.rs index 46b1334835f..6648992dc61 100644 --- a/src/libsyntax/ext/fmt.rs +++ b/src/libsyntax/ext/fmt.rs @@ -25,7 +25,7 @@ use ext::build::AstBuilder; use core::option; use core::unstable::extfmt::ct::*; use core::vec; -use parse::token::{get_ident_interner}; +use parse::token::{get_ident_interner, str_to_ident}; pub fn expand_syntax_ext(cx: @ExtCtxt, sp: span, tts: &[ast::token_tree]) -> base::MacResult { @@ -54,12 +54,11 @@ fn pieces_to_expr(cx: @ExtCtxt, sp: span, pieces: ~[Piece], args: ~[@ast::expr]) -> @ast::expr { fn make_path_vec(cx: @ExtCtxt, ident: &str) -> ~[ast::ident] { - let intr = get_ident_interner(); - return ~[intr.intern("std"), - intr.intern("unstable"), - intr.intern("extfmt"), - intr.intern("rt"), - intr.intern(ident)]; + return ~[str_to_ident("std"), + str_to_ident("unstable"), + str_to_ident("extfmt"), + str_to_ident("rt"), + str_to_ident(ident)]; } fn make_rt_path_expr(cx: @ExtCtxt, sp: span, nm: &str) -> @ast::expr { let path = make_path_vec(cx, nm); @@ -113,15 +112,14 @@ fn pieces_to_expr(cx: @ExtCtxt, sp: span, fn make_conv_struct(cx: @ExtCtxt, sp: span, flags_expr: @ast::expr, width_expr: @ast::expr, precision_expr: @ast::expr, ty_expr: @ast::expr) -> @ast::expr { - let intr = get_ident_interner(); cx.expr_struct( sp, cx.path_global(sp, make_path_vec(cx, "Conv")), ~[ - cx.field_imm(sp, intr.intern("flags"), flags_expr), - cx.field_imm(sp, intr.intern("width"), width_expr), - cx.field_imm(sp, intr.intern("precision"), precision_expr), - cx.field_imm(sp, intr.intern("ty"), ty_expr) + cx.field_imm(sp, str_to_ident("flags"), flags_expr), + cx.field_imm(sp, str_to_ident("width"), width_expr), + cx.field_imm(sp, str_to_ident("precision"), precision_expr), + cx.field_imm(sp, str_to_ident("ty"), ty_expr) ] ) } @@ -256,11 +254,11 @@ fn pieces_to_expr(cx: @ExtCtxt, sp: span, let nargs = args.len(); /* 'ident' is the local buffer building up the result of fmt! */ - let ident = get_ident_interner().intern("__fmtbuf"); + let ident = str_to_ident("__fmtbuf"); let buf = || cx.expr_ident(fmt_sp, ident); - let core_ident = get_ident_interner().intern("std"); - let str_ident = get_ident_interner().intern("str"); - let push_ident = get_ident_interner().intern("push_str"); + let core_ident = str_to_ident("std"); + let str_ident = str_to_ident("str"); + let push_ident = str_to_ident("push_str"); let mut stms = ~[]; /* Translate each piece (portion of the fmt expression) by invoking the diff --git a/src/libsyntax/ext/pipes/parse_proto.rs b/src/libsyntax/ext/pipes/parse_proto.rs index 732094655f2..68641d3f3e7 100644 --- a/src/libsyntax/ext/pipes/parse_proto.rs +++ b/src/libsyntax/ext/pipes/parse_proto.rs @@ -17,7 +17,7 @@ use ext::pipes::proto::*; use parse::common::SeqSep; use parse::parser; use parse::token; -use parse::token::{get_ident_interner}; +use parse::token::{get_ident_interner, interner_get}; pub trait proto_parser { fn parse_proto(&self, id: ~str) -> protocol; @@ -43,11 +43,11 @@ impl proto_parser for parser::Parser { fn parse_state(&self, proto: protocol) { let id = self.parse_ident(); - let name = copy *get_ident_interner().get(id); + let name = copy *interner_get(id.name); self.expect(&token::COLON); let dir = match copy *self.token { - token::IDENT(n, _) => get_ident_interner().get(n), + token::IDENT(n, _) => interner_get(n.name), _ => fail!() }; self.bump(); @@ -78,7 +78,7 @@ impl proto_parser for parser::Parser { } fn parse_message(&self, state: state) { - let mname = copy *get_ident_interner().get(self.parse_ident()); + let mname = copy *interner_get(self.parse_ident().name); let args = if *self.token == token::LPAREN { self.parse_unspanned_seq( @@ -97,7 +97,7 @@ impl proto_parser for parser::Parser { let next = match *self.token { token::IDENT(_, _) => { - let name = copy *get_ident_interner().get(self.parse_ident()); + let name = copy *interner_get(self.parse_ident().name); let ntys = if *self.token == token::LT { self.parse_unspanned_seq( &token::LT, diff --git a/src/libsyntax/ext/quote.rs b/src/libsyntax/ext/quote.rs index bfa4faa8b28..f8835b51aa5 100644 --- a/src/libsyntax/ext/quote.rs +++ b/src/libsyntax/ext/quote.rs @@ -80,7 +80,7 @@ pub mod rt { impl ToSource for ast::ident { fn to_source(&self, cx: @ExtCtxt) -> ~str { - copy *get_ident_interner().get(*self) + copy *interner_get(self.name) } } @@ -418,11 +418,11 @@ pub fn expand_quote_stmt(cx: @ExtCtxt, } fn ids_ext(cx: @ExtCtxt, strs: ~[~str]) -> ~[ast::ident] { - strs.map(|str| get_ident_interner().intern(*str)) + strs.map(|str| str_to_ident(*str)) } fn id_ext(cx: @ExtCtxt, str: &str) -> ast::ident { - get_ident_interner().intern(str) + str_to_ident(str) } // Lift an ident to the expr that evaluates to that ident. diff --git a/src/libsyntax/ext/tt/macro_parser.rs b/src/libsyntax/ext/tt/macro_parser.rs index 1b23b96a732..86077a5c0b3 100644 --- a/src/libsyntax/ext/tt/macro_parser.rs +++ b/src/libsyntax/ext/tt/macro_parser.rs @@ -19,7 +19,7 @@ use codemap; use parse::lexer::*; //resolve bug? use parse::ParseSess; use parse::parser::Parser; -use parse::token::{Token, EOF, to_str, nonterminal, get_ident_interner}; +use parse::token::{Token, EOF, to_str, nonterminal, get_ident_interner, ident_to_str}; use parse::token; use core::hashmap::HashMap; @@ -201,13 +201,13 @@ pub fn nameize(p_s: @mut ParseSess, ms: &[matcher], res: &[@named_match]) }; } codemap::spanned { - node: match_nonterminal(bind_name, _, idx), span: sp + node: match_nonterminal(ref bind_name, _, idx), span: sp } => { - if ret_val.contains_key(&bind_name) { + if ret_val.contains_key(bind_name) { p_s.span_diagnostic.span_fatal(sp, ~"Duplicated bind name: "+ - *get_ident_interner().get(bind_name)) + *ident_to_str(*bind_name)) } - ret_val.insert(bind_name, res[idx]); + ret_val.insert(*bind_name, res[idx]); } } } @@ -372,9 +372,9 @@ pub fn parse( || bb_eis.len() > 1u { let nts = str::connect(vec::map(bb_eis, |ei| { match ei.elts[ei.idx].node { - match_nonterminal(bind,name,_) => { - fmt!("%s ('%s')", *get_ident_interner().get(name), - *get_ident_interner().get(bind)) + match_nonterminal(ref bind,ref name,_) => { + fmt!("%s ('%s')", *ident_to_str(*name), + *ident_to_str(*bind)) } _ => fail!() } }), " or "); @@ -396,9 +396,9 @@ pub fn parse( let mut ei = bb_eis.pop(); match ei.elts[ei.idx].node { - match_nonterminal(_, name, idx) => { + match_nonterminal(_, ref name, idx) => { ei.matches[idx].push(@matched_nonterminal( - parse_nt(&rust_parser, *get_ident_interner().get(name)))); + parse_nt(&rust_parser, *ident_to_str(*name)))); ei.idx += 1u; } _ => fail!() diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs index 13393b76663..be2c50d223d 100644 --- a/src/libsyntax/ext/tt/macro_rules.rs +++ b/src/libsyntax/ext/tt/macro_rules.rs @@ -21,7 +21,7 @@ use ext::tt::macro_parser::{named_match, matched_seq, matched_nonterminal}; use ext::tt::macro_parser::{parse, parse_or_else, success, failure}; use parse::lexer::{new_tt_reader, reader}; use parse::parser::Parser; -use parse::token::{get_ident_interner, special_idents}; +use parse::token::{get_ident_interner, special_idents, gensym_ident, ident_to_str}; use parse::token::{FAT_ARROW, SEMI, nt_matchers, nt_tt}; use print; @@ -38,8 +38,8 @@ pub fn add_new_extension(cx: @ExtCtxt, spanned { node: copy m, span: dummy_sp() } } - let lhs_nm = get_ident_interner().gensym("lhs"); - let rhs_nm = get_ident_interner().gensym("rhs"); + let lhs_nm = gensym_ident("lhs"); + let rhs_nm = gensym_ident("rhs"); // The grammar for macro_rules! is: // $( $lhs:mtcs => $rhs:tt );+ @@ -151,7 +151,7 @@ pub fn add_new_extension(cx: @ExtCtxt, |cx, sp, arg| generic_extension(cx, sp, name, arg, *lhses, *rhses); return MRDef(MacroDef{ - name: copy *get_ident_interner().get(name), + name: copy *ident_to_str(name), ext: NormalTT(base::SyntaxExpanderTT{expander: exp, span: Some(sp)}) }); } diff --git a/src/libsyntax/ext/tt/transcribe.rs b/src/libsyntax/ext/tt/transcribe.rs index b508b342478..8ff66dc62e3 100644 --- a/src/libsyntax/ext/tt/transcribe.rs +++ b/src/libsyntax/ext/tt/transcribe.rs @@ -15,7 +15,8 @@ use ast::{token_tree, tt_delim, tt_tok, tt_seq, tt_nonterminal,ident}; use codemap::{span, dummy_sp}; use diagnostic::span_handler; use ext::tt::macro_parser::{named_match, matched_seq, matched_nonterminal}; -use parse::token::{EOF, INTERPOLATED, IDENT, Token, nt_ident, ident_interner, get_ident_interner}; +use parse::token::{EOF, INTERPOLATED, IDENT, Token, nt_ident, ident_interner}; +use parse::token::{ident_to_str, get_ident_interner}; use parse::lexer::TokenAndSpan; use core::hashmap::HashMap; @@ -126,7 +127,7 @@ fn lookup_cur_matched(r: &mut TtReader, name: ident) -> @named_match { Some(s) => lookup_cur_matched_by_matched(r, s), None => { r.sp_diag.span_fatal(r.cur_span, fmt!("unknown macro variable `%s`", - *r.interner.get(name))); + *r.interner.get(name.name))); } } } @@ -139,13 +140,13 @@ fn lockstep_iter_size(t: &token_tree, r: &mut TtReader) -> lis { match lhs { lis_unconstrained => copy rhs, lis_contradiction(_) => copy lhs, - lis_constraint(l_len, l_id) => match rhs { + lis_constraint(l_len, ref l_id) => match rhs { lis_unconstrained => copy lhs, lis_contradiction(_) => copy rhs, lis_constraint(r_len, _) if l_len == r_len => copy lhs, - lis_constraint(r_len, r_id) => { - let l_n = copy *get_ident_interner().get(l_id); - let r_n = copy *get_ident_interner().get(r_id); + lis_constraint(r_len, ref r_id) => { + let l_n = copy *ident_to_str(*l_id); + let r_n = copy *ident_to_str(*r_id); lis_contradiction(fmt!("Inconsistent lockstep iteration: \ '%s' has %u items, but '%s' has %u", l_n, l_len, r_n, r_len)) @@ -295,7 +296,7 @@ pub fn tt_next_token(r: &mut TtReader) -> TokenAndSpan { r.sp_diag.span_fatal( copy r.cur_span, /* blame the macro writer */ fmt!("variable '%s' is still repeating at this depth", - *get_ident_interner().get(ident))); + *ident_to_str(ident))); } } } -- cgit 1.4.1-3-g733a5