@@ -73,7 +73,6 @@ fn reachable(ecx: @encode_ctxt, id: node_id) -> bool {
73
73
ecx. reachable . contains_key ( id)
74
74
}
75
75
76
- // Path table encoding
77
76
fn encode_name ( ebml_w : ebml:: writer , name : ident ) {
78
77
ebml_w. wr_tagged_str ( tag_paths_data_name, * name) ;
79
78
}
@@ -82,26 +81,12 @@ fn encode_def_id(ebml_w: ebml::writer, id: def_id) {
82
81
ebml_w. wr_tagged_str ( tag_def_id, def_to_str ( id) ) ;
83
82
}
84
83
85
- /* Encodes the given name, then def_id as tagged strings */
86
- fn encode_name_and_def_id ( ebml_w : ebml:: writer , nm : ident ,
87
- id : node_id ) {
88
- encode_name ( ebml_w, nm) ;
89
- encode_def_id ( ebml_w, local_def ( id) ) ;
90
- }
91
-
92
84
fn encode_region_param ( ecx : @encode_ctxt , ebml_w : ebml:: writer ,
93
85
it : @ast:: item ) {
94
86
let rp = ecx. tcx . region_paramd_items . contains_key ( it. id ) ;
95
87
if rp { do ebml_w. wr_tag ( tag_region_param) { } }
96
88
}
97
89
98
- fn encode_named_def_id ( ebml_w : ebml:: writer , name : ident , id : def_id ) {
99
- do ebml_w. wr_tag ( tag_paths_data_item) {
100
- encode_name ( ebml_w, name) ;
101
- encode_def_id ( ebml_w, id) ;
102
- }
103
- }
104
-
105
90
fn encode_mutability ( ebml_w : ebml:: writer , mt : class_mutability ) {
106
91
do ebml_w. wr_tag ( tag_class_mut) {
107
92
let val = match mt {
@@ -114,32 +99,6 @@ fn encode_mutability(ebml_w: ebml::writer, mt: class_mutability) {
114
99
115
100
type entry < T > = { val : T , pos : uint } ;
116
101
117
- fn encode_enum_variant_paths ( ebml_w : ebml:: writer , variants : ~[ variant ] ,
118
- path : ~[ ident ] , & index: ~[ entry < ~str > ] ) {
119
- for variants. each |variant| {
120
- add_to_index( ebml_w, path, index, variant. node. name) ;
121
- do ebml_w. wr_tag( tag_paths_data_item) {
122
- encode_name( ebml_w, variant. node. name) ;
123
- encode_def_id( ebml_w, local_def( variant. node. id) ) ;
124
- }
125
- }
126
- }
127
-
128
- fn encode_trait_static_method_paths ( ebml_w : ebml:: writer ,
129
- methods : ~[ trait_method ] ,
130
- path : ~[ ident ] ,
131
- & index: ~[ entry < ~str > ] ) {
132
- for methods. each |method| {
133
- let ty_m = trait_method_to_ty_method ( method) ;
134
- if ty_m. self_ty . node != sty_static { again; }
135
- add_to_index ( ebml_w, path, index, ty_m. ident ) ;
136
- do ebml_w. wr_tag ( tag_paths_data_item) {
137
- encode_name ( ebml_w, ty_m. ident ) ;
138
- encode_def_id ( ebml_w, local_def ( ty_m. id ) ) ;
139
- }
140
- }
141
- }
142
-
143
102
fn add_to_index ( ebml_w : ebml:: writer , path : & [ ident ] , & index: ~[ entry < ~str > ] ,
144
103
name : ident ) {
145
104
let mut full_path = ~[ ] ;
@@ -149,162 +108,12 @@ fn add_to_index(ebml_w: ebml::writer, path: &[ident], &index: ~[entry<~str>],
149
108
pos: ebml_w. writer . tell ( ) } ) ;
150
109
}
151
110
152
- fn encode_foreign_module_item_paths ( ebml_w : ebml:: writer , nmod : foreign_mod ,
153
- path : ~[ ident ] , & index: ~[ entry < ~str > ] ) {
154
- for nmod. items. each |nitem| {
155
- add_to_index( ebml_w, path, index, nitem. ident) ;
156
- do ebml_w. wr_tag( tag_paths_foreign_path) {
157
- encode_name( ebml_w, nitem. ident) ;
158
- encode_def_id( ebml_w, local_def( nitem. id) ) ;
159
- }
160
- }
161
- }
162
-
163
- fn encode_class_item_paths ( ebml_w : ebml:: writer ,
164
- fields : ~[ @ast:: struct_field ] ,
165
- methods : ~[ @ast:: method ] ,
166
- path : ~[ ident ] ,
167
- & index: ~[ entry < ~str > ] ) {
168
- for fields. each |field| {
169
- match field. node . kind {
170
- ast:: named_field( ident, _, visibility) => {
171
- if visibility == private { again; }
172
- let ( id, ident) = ( field. node . id , ident) ;
173
- add_to_index ( ebml_w, path, index, ident) ;
174
- encode_named_def_id ( ebml_w, ident, local_def ( id) ) ;
175
- }
176
- ast:: unnamed_field => { }
177
- }
178
- }
179
-
180
- for methods. each |method| {
181
- if method. vis == private { again; }
182
- let ( id, ident) = ( method. id , method. ident ) ;
183
- add_to_index ( ebml_w, path, index, ident) ;
184
- encode_named_def_id ( ebml_w, ident, local_def ( id) ) ;
185
- }
186
- }
187
-
188
- fn encode_module_item_paths ( ebml_w : ebml:: writer , ecx : @encode_ctxt ,
189
- module_ : _mod , path : ~[ ident ] ,
190
- & index: ~[ entry < ~str > ] ) {
191
- for module_. items. each |it| {
192
- if !reachable ( ecx, it. id ) ||
193
- !ast_util:: is_exported ( it. ident , module_) { again; }
194
- if !ast_util:: is_item_impl ( it) {
195
- add_to_index ( ebml_w, path, index, it. ident ) ;
196
- }
197
- match it. node {
198
- item_const( _, _) => {
199
- encode_named_def_id ( ebml_w, it. ident , local_def ( it. id ) ) ;
200
- }
201
- item_fn( _, tps, _) => {
202
- encode_named_def_id ( ebml_w, it. ident , local_def ( it. id ) ) ;
203
- }
204
- item_mod( _mod) => {
205
- do ebml_w. wr_tag ( tag_paths_data_mod) {
206
- encode_name_and_def_id ( ebml_w, it. ident , it. id ) ;
207
- encode_module_item_paths ( ebml_w, ecx, _mod,
208
- vec:: append_one ( path, it. ident ) ,
209
- index) ;
210
- }
211
- }
212
- item_foreign_mod( nmod) => {
213
- do ebml_w. wr_tag ( tag_paths_data_mod) {
214
- encode_name_and_def_id ( ebml_w, it. ident , it. id ) ;
215
- encode_foreign_module_item_paths (
216
- ebml_w, nmod,
217
- vec:: append_one ( path, it. ident ) , index) ;
218
- }
219
- }
220
- item_ty( _, tps) => {
221
- do ebml_w. wr_tag ( tag_paths_data_item) {
222
- encode_name_and_def_id ( ebml_w, it. ident , it. id ) ;
223
- }
224
- }
225
- item_class( struct_def, _) => {
226
- do ebml_w. wr_tag ( tag_paths_data_item) {
227
- encode_name_and_def_id ( ebml_w, it. ident , it. id ) ;
228
- }
229
- do ebml_w. wr_tag ( tag_paths) {
230
- // We add the same ident twice: for the
231
- // class and for its ctor
232
- add_to_index ( ebml_w, path, index, it. ident ) ;
233
-
234
- encode_struct_def ( ebml_w, struct_def, path, it. ident , index) ;
235
- }
236
- }
237
- item_enum( enum_definition, _) => {
238
- do ebml_w. wr_tag ( tag_paths_data_item) {
239
- encode_name_and_def_id ( ebml_w, it. ident , it. id ) ;
240
- }
241
- encode_enum_variant_paths ( ebml_w, enum_definition. variants ,
242
- path, index) ;
243
- }
244
- item_trait( _, _, methods) => {
245
- do ebml_w. wr_tag ( tag_paths_data_item) {
246
- encode_name_and_def_id ( ebml_w, it. ident , it. id ) ;
247
- }
248
- encode_trait_static_method_paths ( ebml_w, methods, path, index) ;
249
- }
250
- item_impl( * ) => { }
251
- item_mac( * ) => fail ~"item macros unimplemented"
252
- }
253
- }
254
- }
255
-
256
- fn encode_struct_def ( ebml_w : ebml:: writer ,
257
- struct_def : @ast:: struct_def ,
258
- path : ~[ ast:: ident ] ,
259
- ident : ast:: ident ,
260
- & index: ~[ entry < ~str > ] ) {
261
- match struct_def. ctor {
262
- none => {
263
- // Nothing to do.
264
- }
265
- some( ctor) => {
266
- encode_named_def_id ( ebml_w, ident, local_def ( ctor. node . id ) ) ;
267
- }
268
- }
269
-
270
- encode_class_item_paths ( ebml_w,
271
- struct_def. fields ,
272
- struct_def. methods ,
273
- vec:: append_one ( path, ident) ,
274
- index) ;
275
- }
276
-
277
111
fn encode_trait_ref ( ebml_w : ebml:: writer , ecx : @encode_ctxt , t : @trait_ref ) {
278
112
ebml_w. start_tag ( tag_impl_trait) ;
279
113
encode_type ( ecx, ebml_w, node_id_to_type ( ecx. tcx , t. ref_id ) ) ;
280
114
ebml_w. end_tag ( ) ;
281
115
}
282
116
283
- fn encode_item_paths ( ebml_w : ebml:: writer , ecx : @encode_ctxt , crate : @crate )
284
- -> ~[ entry < ~str > ] {
285
- let mut index: ~[ entry < ~str > ] = ~[ ] ;
286
- let mut path: ~[ ident ] = ~[ ] ;
287
- ebml_w. start_tag ( tag_paths) ;
288
- encode_module_item_paths ( ebml_w, ecx, crate . node. module , path, index) ;
289
- encode_reexport_paths ( ebml_w, ecx, index) ;
290
- ebml_w. end_tag ( ) ;
291
- return index;
292
- }
293
-
294
- fn encode_reexport_paths ( ebml_w : ebml:: writer ,
295
- ecx : @encode_ctxt , & index: ~[ entry < ~str > ] ) {
296
- for ecx. reexports. each |reexport| {
297
- let ( path, def_id) = reexport;
298
- vec:: push ( index, { val: path, pos: ebml_w. writer . tell ( ) } ) ;
299
- // List metadata ignores tag_paths_foreign_path things, but
300
- // other things look at it.
301
- ebml_w. start_tag ( tag_paths_foreign_path) ;
302
- encode_name ( ebml_w, @path) ;
303
- encode_def_id ( ebml_w, def_id) ;
304
- ebml_w. end_tag ( ) ;
305
- }
306
- }
307
-
308
117
309
118
// Item info table encoding
310
119
fn encode_family ( ebml_w : ebml:: writer , c : char ) {
@@ -517,17 +326,6 @@ fn encode_visibility(ebml_w: ebml::writer, visibility: visibility) {
517
326
} ) ;
518
327
}
519
328
520
- fn encode_region ( ebml_w : ebml:: writer , region : region ) {
521
- match region. node {
522
- re_anon => {
523
- ebml_w. wr_tagged_str ( tag_item_trait_method_self_ty, ~"") ;
524
- }
525
- re_named( ident) => {
526
- ebml_w. wr_tagged_str ( tag_item_trait_method_self_ty, * ident) ;
527
- }
528
- }
529
- }
530
-
531
329
fn encode_self_type ( ebml_w : ebml:: writer , self_type : ast:: self_ty_ ) {
532
330
ebml_w. start_tag ( tag_item_trait_method_self_ty) ;
533
331
@@ -1277,13 +1075,6 @@ fn encode_metadata(parms: encode_parms, crate: @crate) -> ~[u8] {
1277
1075
1278
1076
encode_crate_deps ( ebml_w, ecx. cstore ) ;
1279
1077
1280
- // Encode and index the paths.
1281
- ebml_w. start_tag ( tag_paths) ;
1282
- let paths_index = encode_item_paths ( ebml_w, ecx, crate ) ;
1283
- let paths_buckets = create_index ( paths_index, hash_path) ;
1284
- encode_index ( ebml_w, paths_buckets, write_str) ;
1285
- ebml_w. end_tag ( ) ;
1286
-
1287
1078
// Encode and index the items.
1288
1079
ebml_w. start_tag ( tag_items) ;
1289
1080
let items_index = encode_info_for_items ( ecx, ebml_w, crate ) ;
0 commit comments