@@ -35,7 +35,7 @@ tag def_wrap {
35
35
def_wrap_import ( @ast. view_item ) ;
36
36
def_wrap_mod ( @ast. item ) ;
37
37
def_wrap_other ( def) ;
38
- def_wrap_expr_field ( uint, def ) ;
38
+ def_wrap_expr_field ( uint) ;
39
39
def_wrap_resolving;
40
40
}
41
41
@@ -72,9 +72,6 @@ fn unwrap_def(def_wrap d) -> def {
72
72
case ( def_wrap_other ( ?d) ) {
73
73
ret d;
74
74
}
75
- case ( def_wrap_expr_field ( _, ?d) ) {
76
- ret d;
77
- }
78
75
}
79
76
}
80
77
@@ -143,9 +140,9 @@ fn find_final_def(&env e, import_map index,
143
140
case ( def_wrap_use ( ?c) ) {
144
141
e. sess . span_err ( sp, "Crate access is not implemented" ) ;
145
142
}
146
- case ( def_wrap_other ( ?d ) ) {
143
+ case ( _ ) {
147
144
let uint l = _vec. len [ ident] ( idents) ;
148
- ret def_wrap_expr_field ( l, d ) ;
145
+ ret def_wrap_expr_field ( l) ;
149
146
}
150
147
}
151
148
fail;
@@ -422,13 +419,26 @@ fn fold_pat_tag(&env e, &span sp, ast.path p, vec[@ast.pat] args,
422
419
fn fold_expr_path ( & env e, & span sp, & ast . path p, & option. t[ def] d ,
423
420
ann a) -> @ast . expr {
424
421
auto n_idents = _vec. len [ ast. ident ] ( p. node . idents ) ;
422
+
425
423
check ( n_idents != 0 u) ;
424
+ auto id0 = p. node . idents . ( 0 ) ;
425
+
426
+ auto d_ = lookup_name ( e, id0) ;
427
+
428
+ alt ( d_) {
429
+ case ( some[ def] ( _) ) {
430
+ // log "resolved name " + n.node.ident;
431
+ }
432
+ case ( none[ def] ) {
433
+ e. sess . span_err ( sp, "unresolved name: " + id0) ;
434
+ }
435
+ }
426
436
427
437
auto index = new_def_hash[ def_wrap] ( ) ;
428
438
auto d = find_final_def ( e, index, sp, p. node . idents , none[ ast. def_id ] ) ;
429
439
let uint path_len = 0 u;
430
440
alt ( d) {
431
- case ( def_wrap_expr_field ( ?remaining, _ ) ) {
441
+ case ( def_wrap_expr_field ( ?remaining) ) {
432
442
path_len = n_idents - remaining + 1 u;
433
443
}
434
444
case ( def_wrap_other ( _) ) {
@@ -443,8 +453,7 @@ fn fold_expr_path(&env e, &span sp, &ast.path p, &option.t[def] d,
443
453
}
444
454
auto path_elems =
445
455
_vec. slice [ ident] ( p. node . idents , 0 u, path_len) ;
446
- auto p_ = rec ( node=rec ( idents = path_elems with p. node ) with p) ;
447
- auto d_ = some ( unwrap_def ( d) ) ;
456
+ auto p_ = rec ( node=rec ( idents = vec ( id0) with p. node ) with p) ;
448
457
auto ex = @fold. respan [ ast. expr_ ] ( sp, ast. expr_path ( p_, d_, a) ) ;
449
458
auto i = path_len;
450
459
while ( i < n_idents) {
@@ -464,7 +473,7 @@ fn fold_view_item_import(&env e, &span sp,
464
473
auto last_id = is. ( len - 1 u) ;
465
474
auto d = find_final_def ( e, index, sp, is, some ( id) ) ;
466
475
alt ( d) {
467
- case ( def_wrap_expr_field ( ?remain, _ ) ) {
476
+ case ( def_wrap_expr_field ( ?remain) ) {
468
477
auto ident = is. ( len - remain) ;
469
478
e. sess . span_err ( sp, ident + " is not a module or crate" ) ;
470
479
}
0 commit comments