From a02b10a0621adfe36eb3cc2e46f45fc7ccdb7ea2 Mon Sep 17 00:00:00 2001 From: Eduard Burtescu Date: Fri, 14 Feb 2014 07:07:09 +0200 Subject: Refactored ast_map and friends, mainly to have Paths without storing them. --- src/libsyntax/ext/deriving/decodable.rs | 11 ++++------- src/libsyntax/ext/deriving/encodable.rs | 11 ++++------- src/libsyntax/ext/deriving/generic.rs | 8 +++++--- src/libsyntax/ext/deriving/show.rs | 4 ++-- src/libsyntax/ext/deriving/to_str.rs | 6 +++--- 5 files changed, 18 insertions(+), 22 deletions(-) (limited to 'src/libsyntax/ext/deriving') diff --git a/src/libsyntax/ext/deriving/decodable.rs b/src/libsyntax/ext/deriving/decodable.rs index fdf1ef17d53..c1a6b41db9d 100644 --- a/src/libsyntax/ext/deriving/decodable.rs +++ b/src/libsyntax/ext/deriving/decodable.rs @@ -86,8 +86,7 @@ fn decodable_substructure(cx: &mut ExtCtxt, trait_span: Span, decoder, cx.ident_of("read_struct"), ~[ - cx.expr_str(trait_span, - token::get_ident(substr.type_ident.name)), + cx.expr_str(trait_span, token::get_ident(substr.type_ident)), cx.expr_uint(trait_span, nfields), cx.lambda_expr_1(trait_span, result, blkarg) ]) @@ -100,8 +99,7 @@ fn decodable_substructure(cx: &mut ExtCtxt, trait_span: Span, let rvariant_arg = cx.ident_of("read_enum_variant_arg"); for (i, &(name, v_span, ref parts)) in fields.iter().enumerate() { - variants.push(cx.expr_str(v_span, - token::get_ident(name.name))); + variants.push(cx.expr_str(v_span, token::get_ident(name))); let decoded = decode_static_fields(cx, v_span, @@ -130,8 +128,7 @@ fn decodable_substructure(cx: &mut ExtCtxt, trait_span: Span, decoder, cx.ident_of("read_enum"), ~[ - cx.expr_str(trait_span, - token::get_ident(substr.type_ident.name)), + cx.expr_str(trait_span, token::get_ident(substr.type_ident)), cx.lambda_expr_1(trait_span, result, blkarg) ]) } @@ -166,7 +163,7 @@ fn decode_static_fields(cx: &mut ExtCtxt, Named(ref fields) => { // use the field's span to get nicer error messages. let fields = fields.iter().enumerate().map(|(i, &(name, span))| { - let arg = getarg(cx, span, token::get_ident(name.name), i); + let arg = getarg(cx, span, token::get_ident(name), i); cx.field_imm(span, name, arg) }).collect(); cx.expr_struct_ident(trait_span, outer_pat_ident, fields) diff --git a/src/libsyntax/ext/deriving/encodable.rs b/src/libsyntax/ext/deriving/encodable.rs index 43edf6006b4..f35cdab972c 100644 --- a/src/libsyntax/ext/deriving/encodable.rs +++ b/src/libsyntax/ext/deriving/encodable.rs @@ -132,7 +132,7 @@ fn encodable_substructure(cx: &mut ExtCtxt, trait_span: Span, .. }) in fields.iter().enumerate() { let name = match name { - Some(id) => token::get_ident(id.name), + Some(id) => token::get_ident(id), None => { token::intern_and_get_ident(format!("_field{}", i)) } @@ -152,8 +152,7 @@ fn encodable_substructure(cx: &mut ExtCtxt, trait_span: Span, encoder, cx.ident_of("emit_struct"), ~[ - cx.expr_str(trait_span, - token::get_ident(substr.type_ident.name)), + cx.expr_str(trait_span, token::get_ident(substr.type_ident)), cx.expr_uint(trait_span, fields.len()), blk ]) @@ -179,8 +178,7 @@ fn encodable_substructure(cx: &mut ExtCtxt, trait_span: Span, } let blk = cx.lambda_stmts_1(trait_span, stmts, blkarg); - let name = cx.expr_str(trait_span, - token::get_ident(variant.node.name.name)); + let name = cx.expr_str(trait_span, token::get_ident(variant.node.name)); let call = cx.expr_method_call(trait_span, blkencoder, cx.ident_of("emit_enum_variant"), ~[name, @@ -192,8 +190,7 @@ fn encodable_substructure(cx: &mut ExtCtxt, trait_span: Span, encoder, cx.ident_of("emit_enum"), ~[ - cx.expr_str(trait_span, - token::get_ident(substr.type_ident.name)), + cx.expr_str(trait_span, token::get_ident(substr.type_ident)), blk ]); cx.expr_block(cx.block(trait_span, ~[me], Some(ret))) diff --git a/src/libsyntax/ext/deriving/generic.rs b/src/libsyntax/ext/deriving/generic.rs index 9d290c93c64..a9fdb15fdd4 100644 --- a/src/libsyntax/ext/deriving/generic.rs +++ b/src/libsyntax/ext/deriving/generic.rs @@ -178,7 +178,7 @@ StaticEnum(, ~[(, , Unnamed(~[ TraitDef<'a> { ast::LitStr(token::intern_and_get_ident( "Automatically derived."), ast::CookedStr))); + let opt_trait_ref = Some(trait_ref); + let ident = ast_util::impl_pretty_name(&opt_trait_ref, self_type); cx.item( self.span, - ::parse::token::special_idents::clownshoes_extensions, + ident, ~[doc_attr], - ast::ItemImpl(trait_generics, Some(trait_ref), + ast::ItemImpl(trait_generics, opt_trait_ref, self_type, methods.map(|x| *x))) } diff --git a/src/libsyntax/ext/deriving/show.rs b/src/libsyntax/ext/deriving/show.rs index e2d507f3035..68fad460a34 100644 --- a/src/libsyntax/ext/deriving/show.rs +++ b/src/libsyntax/ext/deriving/show.rs @@ -67,7 +67,7 @@ fn show_substructure(cx: &mut ExtCtxt, span: Span, } }; - let mut format_string = token::get_ident(name.name).get().to_owned(); + let mut format_string = token::get_ident(name).get().to_owned(); // the internal fields we're actually formatting let mut exprs = ~[]; @@ -99,7 +99,7 @@ fn show_substructure(cx: &mut ExtCtxt, span: Span, for (i, field) in fields.iter().enumerate() { if i != 0 { format_string.push_str(","); } - let name = token::get_ident(field.name.unwrap().name); + let name = token::get_ident(field.name.unwrap()); format_string.push_str(" "); format_string.push_str(name.get()); format_string.push_str(": {}"); diff --git a/src/libsyntax/ext/deriving/to_str.rs b/src/libsyntax/ext/deriving/to_str.rs index e5145fb15f7..8453d0f0312 100644 --- a/src/libsyntax/ext/deriving/to_str.rs +++ b/src/libsyntax/ext/deriving/to_str.rs @@ -57,10 +57,10 @@ fn to_str_substructure(cx: &mut ExtCtxt, span: Span, substr: &Substructure) name: ast::Ident, fields: &[FieldInfo]| { if fields.len() == 0 { - cx.expr_str_uniq(span, token::get_ident(name.name)) + cx.expr_str_uniq(span, token::get_ident(name)) } else { let buf = cx.ident_of("buf"); - let interned_str = token::get_ident(name.name); + let interned_str = token::get_ident(name); let start = token::intern_and_get_ident(interned_str.get() + start); let init = cx.expr_str_uniq(span, start); @@ -81,7 +81,7 @@ fn to_str_substructure(cx: &mut ExtCtxt, span: Span, substr: &Substructure) match name { None => {} Some(id) => { - let interned_id = token::get_ident(id.name); + let interned_id = token::get_ident(id); let name = interned_id.get() + ": "; push(cx.expr_str(span, token::intern_and_get_ident(name))); -- cgit 1.4.1-3-g733a5