@@ -8,7 +8,7 @@ use rustc_ast::ast;
8
8
use rustc_ast:: ast:: { Expr , MetaItem , Mutability } ;
9
9
use rustc_ast:: ptr:: P ;
10
10
use rustc_expand:: base:: { Annotatable , ExtCtxt } ;
11
- use rustc_span:: symbol:: { sym, Symbol } ;
11
+ use rustc_span:: symbol:: { sym, Ident , Symbol } ;
12
12
use rustc_span:: Span ;
13
13
14
14
pub fn expand_deriving_rustc_decodable (
@@ -18,38 +18,37 @@ pub fn expand_deriving_rustc_decodable(
18
18
item : & Annotatable ,
19
19
push : & mut dyn FnMut ( Annotatable ) ,
20
20
) {
21
- let krate = " rustc_serialize" ;
22
- let typaram = " __D" ;
21
+ let krate = sym :: rustc_serialize;
22
+ let typaram = sym :: __D;
23
23
24
24
let trait_def = TraitDef {
25
25
span,
26
26
attributes : Vec :: new ( ) ,
27
- path : Path :: new_ ( vec ! [ krate, " Decodable" ] , None , vec ! [ ] , PathKind :: Global ) ,
27
+ path : Path :: new_ ( vec ! [ krate, sym :: Decodable ] , None , vec ! [ ] , PathKind :: Global ) ,
28
28
additional_bounds : Vec :: new ( ) ,
29
- generics : LifetimeBounds :: empty ( ) ,
29
+ generics : Bounds :: empty ( ) ,
30
30
is_unsafe : false ,
31
31
supports_unions : false ,
32
32
methods : vec ! [ MethodDef {
33
33
name: sym:: decode,
34
- generics: LifetimeBounds {
35
- lifetimes: Vec :: new( ) ,
34
+ generics: Bounds {
36
35
bounds: vec![ (
37
36
typaram,
38
- vec![ Path :: new_( vec![ krate, " Decoder" ] , None , vec![ ] , PathKind :: Global ) ] ,
37
+ vec![ Path :: new_( vec![ krate, sym :: Decoder ] , None , vec![ ] , PathKind :: Global ) ] ,
39
38
) ] ,
40
39
} ,
41
40
explicit_self: None ,
42
41
args: vec![ (
43
42
Ptr ( Box :: new( Literal ( Path :: new_local( typaram) ) ) , Borrowed ( None , Mutability :: Mut ) ) ,
44
- "d" ,
43
+ sym :: d ,
45
44
) ] ,
46
45
ret_ty: Literal ( Path :: new_(
47
- pathvec_std!( cx , result:: Result ) ,
46
+ pathvec_std!( result:: Result ) ,
48
47
None ,
49
48
vec![
50
49
Box :: new( Self_ ) ,
51
50
Box :: new( Literal ( Path :: new_(
52
- vec![ typaram, " Error" ] ,
51
+ vec![ typaram, sym :: Error ] ,
53
52
None ,
54
53
vec![ ] ,
55
54
PathKind :: Local ,
@@ -74,17 +73,17 @@ fn decodable_substructure(
74
73
cx : & mut ExtCtxt < ' _ > ,
75
74
trait_span : Span ,
76
75
substr : & Substructure < ' _ > ,
77
- krate : & str ,
76
+ krate : Symbol ,
78
77
) -> P < Expr > {
79
78
let decoder = substr. nonself_args [ 0 ] . clone ( ) ;
80
79
let recurse = vec ! [
81
- cx . ident_of ( krate, trait_span) ,
82
- cx . ident_of ( " Decodable" , trait_span) ,
83
- cx . ident_of ( " decode" , trait_span) ,
80
+ Ident :: new ( krate, trait_span) ,
81
+ Ident :: new ( sym :: Decodable , trait_span) ,
82
+ Ident :: new ( sym :: decode, trait_span) ,
84
83
] ;
85
84
let exprdecode = cx. expr_path ( cx. path_global ( trait_span, recurse) ) ;
86
85
// throw an underscore in front to suppress unused variable warnings
87
- let blkarg = cx . ident_of ( "_d" , trait_span) ;
86
+ let blkarg = Ident :: new ( sym :: _d , trait_span) ;
88
87
let blkdecoder = cx. expr_ident ( trait_span, blkarg) ;
89
88
90
89
match * substr. fields {
@@ -93,7 +92,7 @@ fn decodable_substructure(
93
92
Unnamed ( ref fields, _) => fields. len ( ) ,
94
93
Named ( ref fields) => fields. len ( ) ,
95
94
} ;
96
- let read_struct_field = cx . ident_of ( " read_struct_field" , trait_span) ;
95
+ let read_struct_field = Ident :: new ( sym :: read_struct_field, trait_span) ;
97
96
98
97
let path = cx. path_ident ( trait_span, substr. type_ident ) ;
99
98
let result =
@@ -116,7 +115,7 @@ fn decodable_substructure(
116
115
cx. expr_method_call (
117
116
trait_span,
118
117
decoder,
119
- cx . ident_of ( " read_struct" , trait_span) ,
118
+ Ident :: new ( sym :: read_struct, trait_span) ,
120
119
vec ! [
121
120
cx. expr_str( trait_span, substr. type_ident. name) ,
122
121
cx. expr_usize( trait_span, nfields) ,
@@ -125,11 +124,11 @@ fn decodable_substructure(
125
124
)
126
125
}
127
126
StaticEnum ( _, ref fields) => {
128
- let variant = cx . ident_of ( "i" , trait_span) ;
127
+ let variant = Ident :: new ( sym :: i , trait_span) ;
129
128
130
129
let mut arms = Vec :: with_capacity ( fields. len ( ) + 1 ) ;
131
130
let mut variants = Vec :: with_capacity ( fields. len ( ) ) ;
132
- let rvariant_arg = cx . ident_of ( " read_enum_variant_arg" , trait_span) ;
131
+ let rvariant_arg = Ident :: new ( sym :: read_enum_variant_arg, trait_span) ;
133
132
134
133
for ( i, & ( ident, v_span, ref parts) ) in fields. iter ( ) . enumerate ( ) {
135
134
variants. push ( cx. expr_str ( v_span, ident. name ) ) ;
@@ -164,13 +163,13 @@ fn decodable_substructure(
164
163
let result = cx. expr_method_call (
165
164
trait_span,
166
165
blkdecoder,
167
- cx . ident_of ( " read_enum_variant" , trait_span) ,
166
+ Ident :: new ( sym :: read_enum_variant, trait_span) ,
168
167
vec ! [ variant_vec, lambda] ,
169
168
) ;
170
169
cx. expr_method_call (
171
170
trait_span,
172
171
decoder,
173
- cx . ident_of ( " read_enum" , trait_span) ,
172
+ Ident :: new ( sym :: read_enum, trait_span) ,
174
173
vec ! [
175
174
cx. expr_str( trait_span, substr. type_ident. name) ,
176
175
cx. lambda1( trait_span, result, blkarg) ,
0 commit comments