@@ -50,27 +50,27 @@ export require_unique_names;
50
50
/* Constructors */
51
51
52
52
fn mk_name_value_item_str ( name : ~str , +value : ~str ) ->
53
- @ ast:: meta_item {
53
+ ast:: meta_item {
54
54
let value_lit = dummy_spanned ( ast:: lit_str ( @value) ) ;
55
55
return mk_name_value_item ( name, value_lit) ;
56
56
}
57
57
58
58
fn mk_name_value_item ( name : ~str , +value : ast:: lit )
59
- -> @ ast:: meta_item {
60
- return @ dummy_spanned ( ast:: meta_name_value ( name, value) ) ;
59
+ -> ast:: meta_item {
60
+ return dummy_spanned ( ast:: meta_name_value ( name, value) ) ;
61
61
}
62
62
63
- fn mk_list_item ( name : ~str , +items : ~[ @ ast:: meta_item ] ) ->
64
- @ ast:: meta_item {
65
- return @ dummy_spanned ( ast:: meta_list ( name, items) ) ;
63
+ fn mk_list_item ( name : ~str , +items : ~[ ast:: meta_item ] ) ->
64
+ ast:: meta_item {
65
+ return dummy_spanned ( ast:: meta_list ( name, items) ) ;
66
66
}
67
67
68
- fn mk_word_item ( name : ~str ) -> @ ast:: meta_item {
69
- return @ dummy_spanned ( ast:: meta_word ( name) ) ;
68
+ fn mk_word_item ( name : ~str ) -> ast:: meta_item {
69
+ return dummy_spanned ( ast:: meta_word ( name) ) ;
70
70
}
71
71
72
- fn mk_attr ( item : @ ast:: meta_item ) -> ast:: attribute {
73
- return dummy_spanned ( { style: ast:: attr_inner, value: * item,
72
+ fn mk_attr ( + item : ast:: meta_item ) -> ast:: attribute {
73
+ return dummy_spanned ( { style: ast:: attr_inner, value: item,
74
74
is_sugared_doc: false} ) ;
75
75
}
76
76
@@ -86,10 +86,10 @@ fn mk_sugared_doc_attr(text: ~str, lo: uint, hi: uint) -> ast::attribute {
86
86
87
87
/* Conversion */
88
88
89
- fn attr_meta ( attr : ast:: attribute ) -> @ ast:: meta_item { @ attr. node . value }
89
+ fn attr_meta ( attr : ast:: attribute ) -> ast:: meta_item { attr. node . value }
90
90
91
91
// Get the meta_items from inside a vector of attributes
92
- fn attr_metas ( attrs : ~[ ast:: attribute ] ) -> ~[ @ ast:: meta_item ] {
92
+ fn attr_metas ( attrs : ~[ ast:: attribute ] ) -> ~[ ast:: meta_item ] {
93
93
let mut mitems = ~[ ] ;
94
94
for attrs. each |a| { vec:: push( mitems, attr_meta( * a) ) ; }
95
95
return mitems;
@@ -112,7 +112,7 @@ fn get_attr_name(attr: ast::attribute) -> ~str {
112
112
get_meta_item_name ( @attr. node . value )
113
113
}
114
114
115
- fn get_meta_item_name ( meta : @ ast:: meta_item ) -> ~str {
115
+ fn get_meta_item_name ( meta : & ast:: meta_item ) -> ~str {
116
116
match meta. node {
117
117
ast:: meta_word( n) => n,
118
118
ast:: meta_name_value( n, _) => n,
@@ -124,7 +124,7 @@ fn get_meta_item_name(meta: @ast::meta_item) -> ~str {
124
124
* Gets the string value if the meta_item is a meta_name_value variant
125
125
* containing a string, otherwise none
126
126
*/
127
- fn get_meta_item_value_str ( meta : @ ast:: meta_item ) -> Option < ~str > {
127
+ fn get_meta_item_value_str ( meta : & ast:: meta_item ) -> Option < ~str > {
128
128
match meta. node {
129
129
ast:: meta_name_value( _, v) => match v. node {
130
130
ast:: lit_str( s) => option:: Some ( * s) ,
@@ -135,7 +135,7 @@ fn get_meta_item_value_str(meta: @ast::meta_item) -> Option<~str> {
135
135
}
136
136
137
137
/// Gets a list of inner meta items from a list meta_item type
138
- fn get_meta_item_list ( meta : @ ast:: meta_item ) -> Option < ~[ @ ast:: meta_item ] > {
138
+ fn get_meta_item_list ( meta : & ast:: meta_item ) -> Option < ~[ ast:: meta_item ] > {
139
139
match meta. node {
140
140
ast:: meta_list( _, l) => option:: Some ( /* FIXME (#2543) */ copy l) ,
141
141
_ => option:: None
@@ -146,7 +146,7 @@ fn get_meta_item_list(meta: @ast::meta_item) -> Option<~[@ast::meta_item]> {
146
146
* If the meta item is a nam-value type with a string value then returns
147
147
* a tuple containing the name and string value, otherwise `none`
148
148
*/
149
- fn get_name_value_str_pair ( item : @ ast:: meta_item ) -> Option < ( ~str , ~str ) > {
149
+ fn get_name_value_str_pair ( item : & ast:: meta_item ) -> Option < ( ~str , ~str ) > {
150
150
match attr:: get_meta_item_value_str ( item) {
151
151
Some ( value) => {
152
152
let name = attr:: get_meta_item_name ( item) ;
@@ -173,10 +173,10 @@ fn find_attrs_by_name(attrs: ~[ast::attribute], name: ~str) ->
173
173
}
174
174
175
175
/// Searcha list of meta items and return only those with a specific name
176
- fn find_meta_items_by_name ( metas : ~[ @ ast:: meta_item ] , name : ~str ) ->
177
- ~[ @ ast:: meta_item ] {
178
- let filter = fn @( & & m: @ ast:: meta_item) -> Option <@ ast:: meta_item> {
179
- if get_meta_item_name ( m) == name {
176
+ fn find_meta_items_by_name ( metas : ~[ ast:: meta_item ] , name : ~str ) ->
177
+ ~[ ast:: meta_item ] {
178
+ let filter = fn @( & & m: ast:: meta_item) -> Option <ast:: meta_item> {
179
+ if get_meta_item_name ( & m) == name {
180
180
option:: Some ( m)
181
181
} else { option:: None }
182
182
} ;
@@ -187,14 +187,14 @@ fn find_meta_items_by_name(metas: ~[@ast::meta_item], name: ~str) ->
187
187
* Returns true if a list of meta items contains another meta item. The
188
188
* comparison is performed structurally.
189
189
*/
190
- fn contains ( haystack : ~[ @ ast:: meta_item ] , needle : @ ast:: meta_item ) -> bool {
190
+ fn contains ( haystack : ~[ ast:: meta_item ] , needle : & ast:: meta_item ) -> bool {
191
191
for haystack. each |item| {
192
- if eq ( * item, needle) { return true ; }
192
+ if eq ( item, needle) { return true ; }
193
193
}
194
194
return false ;
195
195
}
196
196
197
- fn eq ( a : @ ast:: meta_item , b : @ ast:: meta_item ) -> bool {
197
+ fn eq ( a : & ast:: meta_item , b : & ast:: meta_item ) -> bool {
198
198
return match a. node {
199
199
ast:: meta_word( na) => match b. node {
200
200
ast:: meta_word( nb) => na == nb,
@@ -215,7 +215,7 @@ fn eq(a: @ast::meta_item, b: @ast::meta_item) -> bool {
215
215
}
216
216
}
217
217
218
- fn contains_name ( metas : ~[ @ ast:: meta_item ] , name : ~str ) -> bool {
218
+ fn contains_name ( metas : ~[ ast:: meta_item ] , name : ~str ) -> bool {
219
219
let matches = find_meta_items_by_name ( metas, name) ;
220
220
return vec:: len ( matches) > 0 u;
221
221
}
@@ -229,35 +229,35 @@ fn first_attr_value_str_by_name(attrs: ~[ast::attribute], name: ~str)
229
229
230
230
let mattrs = find_attrs_by_name ( attrs, name) ;
231
231
if vec:: len ( mattrs) > 0 u {
232
- return get_meta_item_value_str ( attr_meta ( mattrs[ 0 ] ) ) ;
232
+ return get_meta_item_value_str ( & attr_meta ( mattrs[ 0 ] ) ) ;
233
233
}
234
234
return option:: None ;
235
235
}
236
236
237
- fn last_meta_item_by_name ( items : ~[ @ ast:: meta_item ] , name : ~str )
238
- -> Option < @ ast:: meta_item > {
237
+ fn last_meta_item_by_name ( items : ~[ ast:: meta_item ] , name : ~str )
238
+ -> Option < ast:: meta_item > {
239
239
240
240
let items = attr:: find_meta_items_by_name ( items, name) ;
241
241
vec:: last_opt ( items)
242
242
}
243
243
244
- fn last_meta_item_value_str_by_name ( items : ~[ @ ast:: meta_item ] , name : ~str )
244
+ fn last_meta_item_value_str_by_name ( items : ~[ ast:: meta_item ] , name : ~str )
245
245
-> Option < ~str > {
246
246
247
247
match last_meta_item_by_name ( items, name) {
248
- Some ( item) => match attr:: get_meta_item_value_str ( item) {
248
+ Some ( item) => match attr:: get_meta_item_value_str ( & item) {
249
249
Some ( value) => Some ( value) ,
250
250
None => None
251
251
} ,
252
252
None => None
253
253
}
254
254
}
255
255
256
- fn last_meta_item_list_by_name ( items : ~[ @ ast:: meta_item ] , name : ~str )
257
- -> Option < ~[ @ ast:: meta_item ] > {
256
+ fn last_meta_item_list_by_name ( items : ~[ ast:: meta_item ] , name : ~str )
257
+ -> Option < ~[ ast:: meta_item ] > {
258
258
259
259
match last_meta_item_by_name ( items, name) {
260
- Some ( item) => attr:: get_meta_item_list ( item) ,
260
+ Some ( item) => attr:: get_meta_item_list ( & item) ,
261
261
None => None
262
262
}
263
263
}
@@ -267,29 +267,29 @@ fn last_meta_item_list_by_name(items: ~[@ast::meta_item], name: ~str)
267
267
268
268
// FIXME (#607): This needs to sort by meta_item variant in addition to
269
269
// the item name (See [Fixme-sorting])
270
- fn sort_meta_items ( +items : ~[ @ ast:: meta_item ] ) -> ~[ @ ast:: meta_item ] {
271
- pure fn lteq ( ma : & @ ast:: meta_item , mb : & @ ast:: meta_item ) -> bool {
270
+ fn sort_meta_items ( +items : ~[ ast:: meta_item ] ) -> ~[ ast:: meta_item ] {
271
+ pure fn lteq ( ma : & ast:: meta_item , mb : & ast:: meta_item ) -> bool {
272
272
pure fn key ( m : & ast:: meta_item ) -> ~str {
273
273
match m. node {
274
274
ast:: meta_word( name) => name,
275
275
ast:: meta_name_value( name, _) => name,
276
276
ast:: meta_list( name, _) => name
277
277
}
278
278
}
279
- key ( * ma) <= key ( * mb)
279
+ key ( ma) <= key ( mb)
280
280
}
281
281
282
282
// This is sort of stupid here, converting to a vec of mutables and back
283
- let v: ~[ mut @ ast:: meta_item ] = vec:: to_mut ( items) ;
283
+ let v: ~[ mut ast:: meta_item ] = vec:: to_mut ( items) ;
284
284
std:: sort:: quick_sort ( lteq, v) ;
285
285
vec:: from_mut ( move v)
286
286
}
287
287
288
- fn remove_meta_items_by_name ( items : ~[ @ ast:: meta_item ] , name : ~str ) ->
289
- ~[ @ ast:: meta_item ] {
288
+ fn remove_meta_items_by_name ( items : ~[ ast:: meta_item ] , name : ~str ) ->
289
+ ~[ ast:: meta_item ] {
290
290
291
291
return vec:: filter_map ( items, |item| {
292
- if get_meta_item_name ( item) != name {
292
+ if get_meta_item_name ( & item) != name {
293
293
option:: Some ( /* FIXME (#2543) */ copy item)
294
294
} else {
295
295
option:: None
@@ -301,7 +301,7 @@ fn remove_meta_items_by_name(items: ~[@ast::meta_item], name: ~str) ->
301
301
* From a list of crate attributes get only the meta_items that affect crate
302
302
* linkage
303
303
*/
304
- fn find_linkage_metas ( attrs : ~[ ast:: attribute ] ) -> ~[ @ ast:: meta_item ] {
304
+ fn find_linkage_metas ( attrs : ~[ ast:: attribute ] ) -> ~[ ast:: meta_item ] {
305
305
do find_attrs_by_name ( attrs, ~"link") . flat_map |attr| {
306
306
match attr. node . value . node {
307
307
ast:: meta_list( _, items) => /* FIXME (#2543) */ copy items,
@@ -376,10 +376,10 @@ fn find_inline_attr(attrs: ~[ast::attribute]) -> inline_attr {
376
376
377
377
378
378
fn require_unique_names ( diagnostic : span_handler ,
379
- metas : ~[ @ ast:: meta_item ] ) {
379
+ metas : ~[ ast:: meta_item ] ) {
380
380
let map = map:: HashMap ( ) ;
381
381
for metas. each |meta| {
382
- let name = get_meta_item_name ( * meta) ;
382
+ let name = get_meta_item_name ( meta) ;
383
383
384
384
// FIXME: How do I silence the warnings? --pcw (#2619)
385
385
if map. contains_key ( name) {
0 commit comments