@@ -18,7 +18,7 @@ use ast;
18
18
use ast:: { AttrId , Attribute , Name , Ident } ;
19
19
use ast:: { MetaItem , MetaItemKind , NestedMetaItem , NestedMetaItemKind } ;
20
20
use ast:: { Lit , LitKind , Expr , ExprKind , Item , Local , Stmt , StmtKind } ;
21
- use codemap:: { Spanned , respan, dummy_spanned} ;
21
+ use codemap:: { BytePos , Spanned , respan, dummy_spanned} ;
22
22
use syntax_pos:: Span ;
23
23
use errors:: Handler ;
24
24
use feature_gate:: { Features , GatedCfg } ;
@@ -111,7 +111,7 @@ const RUST_KNOWN_TOOL: &[&str] = &["clippy", "rustfmt"];
111
111
112
112
pub fn is_known_tool ( attr : & Attribute ) -> bool {
113
113
let tool_name =
114
- attr. path . segments . iter ( ) . next ( ) . expect ( "empty path in attribute" ) . identifier . name ;
114
+ attr. path . segments . iter ( ) . next ( ) . expect ( "empty path in attribute" ) . ident . name ;
115
115
RUST_KNOWN_TOOL . contains ( & tool_name. as_str ( ) . as_ref ( ) )
116
116
}
117
117
@@ -213,7 +213,7 @@ impl NestedMetaItem {
213
213
}
214
214
215
215
fn name_from_path ( path : & ast:: Path ) -> Name {
216
- path. segments . last ( ) . expect ( "empty path in attribute" ) . identifier . name
216
+ path. segments . last ( ) . expect ( "empty path in attribute" ) . ident . name
217
217
}
218
218
219
219
impl Attribute {
@@ -266,7 +266,7 @@ impl Attribute {
266
266
267
267
impl MetaItem {
268
268
pub fn name ( & self ) -> Name {
269
- name_from_path ( & self . name )
269
+ name_from_path ( & self . ident )
270
270
}
271
271
272
272
pub fn value_str ( & self ) -> Option < Symbol > {
@@ -315,7 +315,7 @@ impl Attribute {
315
315
pub fn meta ( & self ) -> Option < MetaItem > {
316
316
let mut tokens = self . tokens . trees ( ) . peekable ( ) ;
317
317
Some ( MetaItem {
318
- name : self . path . clone ( ) ,
318
+ ident : self . path . clone ( ) ,
319
319
node : if let Some ( node) = MetaItemKind :: from_tokens ( & mut tokens) {
320
320
if tokens. peek ( ) . is_some ( ) {
321
321
return None ;
@@ -361,7 +361,7 @@ impl Attribute {
361
361
362
362
pub fn parse_meta < ' a > ( & self , sess : & ' a ParseSess ) -> PResult < ' a , MetaItem > {
363
363
Ok ( MetaItem {
364
- name : self . path . clone ( ) ,
364
+ ident : self . path . clone ( ) ,
365
365
node : self . parse ( sess, |parser| parser. parse_meta_item_kind ( ) ) ?,
366
366
span : self . span ,
367
367
} )
@@ -399,41 +399,19 @@ pub fn mk_name_value_item_str(ident: Ident, value: Spanned<Symbol>) -> MetaItem
399
399
}
400
400
401
401
pub fn mk_name_value_item ( span : Span , ident : Ident , value : ast:: Lit ) -> MetaItem {
402
- MetaItem { ident, span, node : MetaItemKind :: NameValue ( value) }
402
+ MetaItem { ident : ast :: Path :: from_ident ( ident ) , span, node : MetaItemKind :: NameValue ( value) }
403
403
}
404
404
405
405
pub fn mk_list_item ( span : Span , ident : Ident , items : Vec < NestedMetaItem > ) -> MetaItem {
406
- MetaItem { ident, span, node : MetaItemKind :: List ( items) }
406
+ MetaItem { ident : ast :: Path :: from_ident ( ident ) , span, node : MetaItemKind :: List ( items) }
407
407
}
408
408
409
409
pub fn mk_word_item ( ident : Ident ) -> MetaItem {
410
- MetaItem { ident, span : ident. span , node : MetaItemKind :: Word }
410
+ MetaItem { ident : ast :: Path :: from_ident ( ident ) , span : ident. span , node : MetaItemKind :: Word }
411
411
}
412
412
413
- pub fn mk_word_item ( name : Name ) -> MetaItem {
414
- mk_spanned_word_item ( DUMMY_SP , name)
415
- }
416
-
417
- macro_rules! mk_spanned_meta_item {
418
- ( $sp: ident, $name: ident, $node: expr) => {
419
- MetaItem {
420
- span: $sp,
421
- name: ast:: Path :: from_ident( $sp, ast:: Ident :: with_empty_ctxt( $name) ) ,
422
- node: $node,
423
- }
424
- }
425
- }
426
-
427
- pub fn mk_spanned_name_value_item ( sp : Span , name : Name , value : ast:: Lit ) -> MetaItem {
428
- mk_spanned_meta_item ! ( sp, name, MetaItemKind :: NameValue ( value) )
429
- }
430
-
431
- pub fn mk_spanned_list_item ( sp : Span , name : Name , items : Vec < NestedMetaItem > ) -> MetaItem {
432
- mk_spanned_meta_item ! ( sp, name, MetaItemKind :: List ( items) )
433
- }
434
-
435
- pub fn mk_spanned_word_item ( sp : Span , name : Name ) -> MetaItem {
436
- mk_spanned_meta_item ! ( sp, name, MetaItemKind :: Word )
413
+ pub fn mk_nested_word_item ( ident : Ident ) -> NestedMetaItem {
414
+ respan ( ident. span , NestedMetaItemKind :: MetaItem ( mk_word_item ( ident) ) )
437
415
}
438
416
439
417
pub fn mk_attr_id ( ) -> AttrId {
@@ -457,7 +435,7 @@ pub fn mk_spanned_attr_inner(sp: Span, id: AttrId, item: MetaItem) -> Attribute
457
435
Attribute {
458
436
id,
459
437
style : ast:: AttrStyle :: Inner ,
460
- path : item. name ,
438
+ path : item. ident ,
461
439
tokens : item. node . tokens ( item. span ) ,
462
440
is_sugared_doc : false ,
463
441
span : sp,
@@ -475,7 +453,7 @@ pub fn mk_spanned_attr_outer(sp: Span, id: AttrId, item: MetaItem) -> Attribute
475
453
Attribute {
476
454
id,
477
455
style : ast:: AttrStyle :: Outer ,
478
- path : item. name ,
456
+ path : item. ident ,
479
457
tokens : item. node . tokens ( item. span ) ,
480
458
is_sugared_doc : false ,
481
459
span : sp,
@@ -1082,7 +1060,7 @@ pub fn find_repr_attrs(diagnostic: &Handler, attr: &Attribute) -> Vec<ReprAttr>
1082
1060
}
1083
1061
} else {
1084
1062
if let Some ( meta_item) = item. meta_item ( ) {
1085
- if meta_item. ident . name == "align" {
1063
+ if meta_item. name ( ) == "align" {
1086
1064
if let MetaItemKind :: NameValue ( ref value) = meta_item. node {
1087
1065
recognised = true ;
1088
1066
let mut err = struct_span_err ! ( diagnostic, item. span, E0693 ,
@@ -1165,14 +1143,17 @@ impl MetaItem {
1165
1143
let mut idents = vec ! [ ] ;
1166
1144
let mut last_pos = BytePos ( 0 as u32 ) ;
1167
1145
// FIXME: Share code with `parse_path`.
1168
- for ( i, segment) in self . name . segments . iter ( ) . enumerate ( ) {
1146
+ for ( i, segment) in self . ident . segments . iter ( ) . enumerate ( ) {
1169
1147
let is_first = i == 0 ;
1170
1148
if !is_first {
1171
- let mod_sep_span = Span :: new ( last_pos, segment. span . lo ( ) , segment. span . ctxt ( ) ) ;
1149
+ let mod_sep_span = Span :: new ( last_pos,
1150
+ segment. ident . span . lo ( ) ,
1151
+ segment. ident . span . ctxt ( ) ) ;
1172
1152
idents. push ( TokenTree :: Token ( mod_sep_span, Token :: ModSep ) . into ( ) ) ;
1173
1153
}
1174
- idents. push ( TokenTree :: Token ( segment. span , Token :: Ident ( segment. identifier ) ) . into ( ) ) ;
1175
- last_pos = segment. span . hi ( ) ;
1154
+ idents. push ( TokenTree :: Token ( segment. ident . span ,
1155
+ Token :: from_ast_ident ( segment. ident ) ) . into ( ) ) ;
1156
+ last_pos = segment. ident . span . hi ( ) ;
1176
1157
}
1177
1158
idents. push ( self . node . tokens ( self . span ) ) ;
1178
1159
TokenStream :: concat ( idents)
@@ -1181,14 +1162,14 @@ impl MetaItem {
1181
1162
fn from_tokens < I > ( tokens : & mut iter:: Peekable < I > ) -> Option < MetaItem >
1182
1163
where I : Iterator < Item = TokenTree > ,
1183
1164
{
1184
- let name = match tokens. next ( ) {
1185
- Some ( TokenTree :: Token ( span, Token :: Ident ( ident) ) ) => {
1165
+ let ident = match tokens. next ( ) {
1166
+ Some ( TokenTree :: Token ( span, Token :: Ident ( ident, _ ) ) ) => {
1186
1167
if let Some ( TokenTree :: Token ( _, Token :: ModSep ) ) = tokens. peek ( ) {
1187
1168
tokens. next ( ) ;
1188
1169
let mut segments = vec ! [ ] ;
1189
1170
loop {
1190
- if let Some ( TokenTree :: Token ( span , Token :: Ident ( ident) ) ) = tokens. next ( ) {
1191
- segments. push ( ast:: PathSegment :: from_ident ( ident, span ) ) ;
1171
+ if let Some ( TokenTree :: Token ( _ , Token :: Ident ( ident, _ ) ) ) = tokens. next ( ) {
1172
+ segments. push ( ast:: PathSegment :: from_ident ( ident) ) ;
1192
1173
} else {
1193
1174
return None ;
1194
1175
}
@@ -1200,12 +1181,12 @@ impl MetaItem {
1200
1181
}
1201
1182
ast:: Path { span, segments }
1202
1183
} else {
1203
- ast:: Path :: from_ident ( span , ident)
1184
+ ast:: Path :: from_ident ( ident)
1204
1185
}
1205
1186
}
1206
1187
Some ( TokenTree :: Token ( _, Token :: Interpolated ( ref nt) ) ) => match nt. 0 {
1207
- token:: Nonterminal :: NtIdent ( ident) => {
1208
- ast:: Path :: from_ident ( ident. span , ident . node )
1188
+ token:: Nonterminal :: NtIdent ( ident, _ ) => {
1189
+ ast:: Path :: from_ident ( ident)
1209
1190
}
1210
1191
token:: Nonterminal :: NtMeta ( ref meta) => return Some ( meta. clone ( ) ) ,
1211
1192
token:: Nonterminal :: NtPath ( ref path) => path. clone ( ) ,
@@ -1217,11 +1198,11 @@ impl MetaItem {
1217
1198
let node = MetaItemKind :: from_tokens ( tokens) ?;
1218
1199
let hi = match node {
1219
1200
MetaItemKind :: NameValue ( ref lit) => lit. span . hi ( ) ,
1220
- MetaItemKind :: List ( ..) => list_closing_paren_pos. unwrap_or ( name . span . hi ( ) ) ,
1221
- _ => name . span . hi ( ) ,
1201
+ MetaItemKind :: List ( ..) => list_closing_paren_pos. unwrap_or ( ident . span . hi ( ) ) ,
1202
+ _ => ident . span . hi ( ) ,
1222
1203
} ;
1223
- let span = name . span . with_hi ( hi) ;
1224
- Some ( MetaItem { name , node, span } )
1204
+ let span = ident . span . with_hi ( hi) ;
1205
+ Some ( MetaItem { ident , node, span } )
1225
1206
}
1226
1207
}
1227
1208
0 commit comments