@@ -13,8 +13,8 @@ use driver::session::session;
13
13
use metadata:: csearch:: { each_path, get_item_attrs} ;
14
14
use metadata:: cstore:: { iter_crate_data} ;
15
15
use metadata:: decoder:: { dl_def, dl_field, dl_impl} ;
16
- use syntax:: ast:: { crate , def_id, def_ty, lit_str, meta_item, meta_list } ;
17
- use syntax:: ast:: { meta_name_value, meta_word} ;
16
+ use syntax:: ast:: { crate , def_fn , def_id, def_ty, lit_str, meta_item} ;
17
+ use syntax:: ast:: { meta_list , meta_name_value, meta_word} ;
18
18
use syntax:: ast_util:: { local_def} ;
19
19
use syntax:: visit:: { default_simple_visitor, mk_simple_visitor} ;
20
20
use syntax:: visit:: { visit_crate, visit_item} ;
@@ -23,26 +23,28 @@ use std::map::{hashmap, str_hash};
23
23
use str_eq = str :: eq;
24
24
25
25
struct LanguageItems {
26
- mut const_trait : Option < def_id > ;
27
- mut copy_trait: Option <def_id>;
28
- mut send_trait: Option <def_id>;
29
- mut owned_trait: Option <def_id>;
30
-
31
- mut add_trait: Option <def_id>;
32
- mut sub_trait: Option <def_id>;
33
- mut mul_trait: Option <def_id>;
34
- mut div_trait: Option <def_id>;
35
- mut modulo_trait: Option <def_id>;
36
- mut neg_trait: Option <def_id>;
37
- mut bitxor_trait: Option <def_id>;
38
- mut bitand_trait: Option <def_id>;
39
- mut bitor_trait: Option <def_id>;
40
- mut shl_trait: Option <def_id>;
41
- mut shr_trait: Option <def_id>;
42
- mut index_trait: Option <def_id>;
43
-
44
- mut eq_trait: Option <def_id>;
45
- mut ord_trait: Option <def_id>;
26
+ mut const_trait : Option < def_id > ,
27
+ mut copy_trait : Option < def_id > ,
28
+ mut send_trait : Option < def_id > ,
29
+ mut owned_trait : Option < def_id > ,
30
+
31
+ mut add_trait : Option < def_id > ,
32
+ mut sub_trait : Option < def_id > ,
33
+ mut mul_trait : Option < def_id > ,
34
+ mut div_trait : Option < def_id > ,
35
+ mut modulo_trait : Option < def_id > ,
36
+ mut neg_trait : Option < def_id > ,
37
+ mut bitxor_trait : Option < def_id > ,
38
+ mut bitand_trait : Option < def_id > ,
39
+ mut bitor_trait : Option < def_id > ,
40
+ mut shl_trait : Option < def_id > ,
41
+ mut shr_trait : Option < def_id > ,
42
+ mut index_trait : Option < def_id > ,
43
+
44
+ mut eq_trait : Option < def_id > ,
45
+ mut ord_trait : Option < def_id > ,
46
+
47
+ mut str_eq_fn : Option < def_id >
46
48
}
47
49
48
50
mod LanguageItems {
@@ -67,7 +69,9 @@ mod LanguageItems {
67
69
index_trait : None ,
68
70
69
71
eq_trait : None ,
70
- ord_trait : None
72
+ ord_trait : None ,
73
+
74
+ str_eq_fn : None
71
75
}
72
76
}
73
77
}
@@ -99,6 +103,8 @@ fn LanguageItemCollector(crate: @crate, session: session,
99
103
item_refs. insert ( ~"eq", & mut items. eq_trait ) ;
100
104
item_refs. insert ( ~"ord", & mut items. ord_trait ) ;
101
105
106
+ item_refs. insert ( ~"str_eq", & mut items. str_eq_fn ) ;
107
+
102
108
LanguageItemCollector {
103
109
crate: crate ,
104
110
session : session,
@@ -117,7 +123,6 @@ struct LanguageItemCollector {
117
123
118
124
fn match_and_collect_meta_item( item_def_id : def_id ,
119
125
meta_item : meta_item ) {
120
-
121
126
match meta_item. node {
122
127
meta_name_value ( key , literal ) => {
123
128
match literal. node {
@@ -183,7 +188,7 @@ struct LanguageItemCollector {
183
188
for each_path( crate_store, crate_number) |path_entry| {
184
189
let def_id;
185
190
match path_entry. def_like {
186
- dl_def( def_ty( did) ) => {
191
+ dl_def( def_ty( did) ) | dl_def ( def_fn ( did , _ ) ) => {
187
192
def_id = did;
188
193
}
189
194
dl_def( _) | dl_impl( _) | dl_field => {
0 commit comments