diff options
| author | Eduard Burtescu <edy.burt@gmail.com> | 2014-02-14 07:07:09 +0200 |
|---|---|---|
| committer | Eduard Burtescu <edy.burt@gmail.com> | 2014-02-14 08:43:29 +0200 |
| commit | a02b10a0621adfe36eb3cc2e46f45fc7ccdb7ea2 (patch) | |
| tree | 86fe8ac57360a232b07c4303547194646129561a /src/libsyntax/ext/deriving | |
| parent | 22c34f3c4cddea33b916eb92f8d7286b02b865a7 (diff) | |
| download | rust-a02b10a0621adfe36eb3cc2e46f45fc7ccdb7ea2.tar.gz rust-a02b10a0621adfe36eb3cc2e46f45fc7ccdb7ea2.zip | |
Refactored ast_map and friends, mainly to have Paths without storing them.
Diffstat (limited to 'src/libsyntax/ext/deriving')
| -rw-r--r-- | src/libsyntax/ext/deriving/decodable.rs | 11 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/encodable.rs | 11 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/generic.rs | 8 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/show.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/ext/deriving/to_str.rs | 6 |
5 files changed, 18 insertions, 22 deletions
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(<ast::EnumDef of C>, ~[(<ident of C0>, <span of C0>, Unnamed(~[<span use ast; use ast::{P, EnumDef, Expr, Ident, Generics, StructDef}; - +use ast_util; use ext::base::ExtCtxt; use ext::build::AstBuilder; use codemap; @@ -405,11 +405,13 @@ impl<'a> 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))); |
