@@ -1155,7 +1155,7 @@ impure fn parse_ty_params(parser p) -> vec[ast.ty_param] {
1155
1155
ret ty_params;
1156
1156
}
1157
1157
1158
- impure fn parse_item_fn ( parser p) -> tup ( ast . ident , @ast . item) {
1158
+ impure fn parse_item_fn ( parser p) -> @ast . item {
1159
1159
auto lo = p. get_span ( ) ;
1160
1160
expect ( p, token. FN ) ;
1161
1161
auto id = parse_ident ( p) ;
@@ -1186,23 +1186,46 @@ impure fn parse_item_fn(parser p) -> tup(ast.ident, @ast.item) {
1186
1186
body = body) ;
1187
1187
1188
1188
auto item = ast. item_fn ( id, f, ty_params, p. next_def_id ( ) , ast. ann_none ) ;
1189
- ret tup ( id , @spanned ( lo, body. span , item) ) ;
1189
+ ret @spanned ( lo, body. span , item) ;
1190
1190
}
1191
1191
1192
1192
impure fn parse_mod_items ( parser p, token . token term) -> ast. _mod {
1193
- let vec[ @ast. item] items = vec ( ) ;
1194
- let hashmap [ ast . ident , uint ] index = new_str_hash[ uint ] ( ) ;
1193
+ let vec[ @ast. item] items = vec ( ) ;
1194
+ auto index = new_str_hash[ ast . mod_index_entry ] ( ) ;
1195
1195
let uint u = 0 u;
1196
1196
while ( p. peek ( ) != term) {
1197
- auto pair = parse_item ( p) ;
1198
- append[ @ast. item ] ( items, pair. _1 ) ;
1199
- index. insert ( pair. _0 , u) ;
1197
+ auto item = parse_item ( p) ;
1198
+ items += vec ( item) ;
1199
+
1200
+ // Index the item.
1201
+ alt ( item. node ) {
1202
+ case ( ast. item_fn ( ?id, _, _, _, _) ) {
1203
+ index. insert ( id, ast. mie_item ( u) ) ;
1204
+ }
1205
+ case ( ast. item_mod ( ?id, _, _) ) {
1206
+ index. insert ( id, ast. mie_item ( u) ) ;
1207
+ }
1208
+ case ( ast. item_ty ( ?id, _, _, _, _) ) {
1209
+ index. insert ( id, ast. mie_item ( u) ) ;
1210
+ }
1211
+
1212
+ case ( ast. item_tag ( ?id, ?variants, _, _) ) {
1213
+ index. insert ( id, ast. mie_item ( u) ) ;
1214
+
1215
+ let uint variant_idx = 0 u;
1216
+ for ( ast. variant v in variants) {
1217
+ index. insert ( v. name , ast. mie_tag_variant ( u, variant_idx) ) ;
1218
+ variant_idx += 1 u;
1219
+ }
1220
+ }
1221
+ }
1222
+
1200
1223
u += 1 u;
1201
1224
}
1202
1225
ret rec( items=items, index=index) ;
1203
1226
}
1204
1227
1205
- impure fn parse_item_mod ( parser p) -> tup ( ast . ident , @ast . item) {
1228
+ impure fn parse_item_mod ( parser p) -> @ast . item {
1206
1229
auto lo = p. get_span ( ) ;
1207
1230
expect ( p, token. MOD ) ;
1208
1231
auto id = parse_ident ( p) ;
@@ -1211,10 +1234,10 @@ impure fn parse_item_mod(parser p) -> tup(ast.ident, @ast.item) {
1211
1234
auto hi = p. get_span ( ) ;
1212
1235
expect ( p, token. RBRACE ) ;
1213
1236
auto item = ast. item_mod ( id, m, p. next_def_id ( ) ) ;
1214
- ret tup ( id , @spanned ( lo, hi, item) ) ;
1237
+ ret @spanned ( lo, hi, item) ;
1215
1238
}
1216
1239
1217
- impure fn parse_item_type ( parser p) -> tup ( ast . ident , @ast . item) {
1240
+ impure fn parse_item_type ( parser p) -> @ast . item {
1218
1241
auto lo = p. get_span ( ) ;
1219
1242
expect ( p, token. TYPE ) ;
1220
1243
auto id = parse_ident ( p) ;
@@ -1225,10 +1248,10 @@ impure fn parse_item_type(parser p) -> tup(ast.ident, @ast.item) {
1225
1248
auto hi = p. get_span ( ) ;
1226
1249
expect ( p, token. SEMI ) ;
1227
1250
auto item = ast. item_ty ( id, ty, tps, p. next_def_id ( ) , ast. ann_none ) ;
1228
- ret tup ( id , @spanned ( lo, hi, item) ) ;
1251
+ ret @spanned ( lo, hi, item) ;
1229
1252
}
1230
1253
1231
- impure fn parse_item_tag ( parser p) -> tup ( ast . ident , @ast . item) {
1254
+ impure fn parse_item_tag ( parser p) -> @ast . item {
1232
1255
auto lo = p. get_span ( ) ;
1233
1256
expect ( p, token. TAG ) ;
1234
1257
auto id = parse_ident ( p) ;
@@ -1273,10 +1296,10 @@ impure fn parse_item_tag(parser p) -> tup(ast.ident, @ast.item) {
1273
1296
1274
1297
auto hi = p. get_span ( ) ;
1275
1298
auto item = ast. item_tag ( id, variants, ty_params, p. next_def_id ( ) ) ;
1276
- ret tup ( id , @spanned ( lo, hi, item) ) ;
1299
+ ret @spanned ( lo, hi, item) ;
1277
1300
}
1278
1301
1279
- impure fn parse_item ( parser p) -> tup ( ast . ident , @ast . item) {
1302
+ impure fn parse_item ( parser p) -> @ast . item {
1280
1303
alt ( p. peek ( ) ) {
1281
1304
case ( token. FN ) {
1282
1305
ret parse_item_fn ( p) ;
0 commit comments