@@ -30,13 +30,13 @@ use syntax::codemap::span;
30
30
use syntax:: print:: pprust:: pat_to_str;
31
31
use syntax:: visit;
32
32
33
- struct AltCheckCtxt {
33
+ struct MatchCheckCtxt {
34
34
tcx : ty:: ctxt ,
35
35
method_map : method_map ,
36
36
}
37
37
38
38
fn check_crate ( tcx : ty:: ctxt , method_map : method_map , crate : @crate ) {
39
- let cx = @AltCheckCtxt { tcx : tcx, method_map : method_map } ;
39
+ let cx = @MatchCheckCtxt { tcx : tcx, method_map : method_map } ;
40
40
visit:: visit_crate ( * crate , ( ) , visit:: mk_vt ( @{
41
41
visit_expr: |a, b, c| check_expr ( cx, a, b, c) ,
42
42
visit_local: |a, b, c| check_local ( cx, a, b, c) ,
@@ -47,7 +47,7 @@ fn check_crate(tcx: ty::ctxt, method_map: method_map, crate: @crate) {
47
47
tcx. sess . abort_if_errors ( ) ;
48
48
}
49
49
50
- fn expr_is_non_moving_lvalue ( cx : @AltCheckCtxt , expr: @expr) -> bool {
50
+ fn expr_is_non_moving_lvalue ( cx : @MatchCheckCtxt , expr: @expr) -> bool {
51
51
if !ty:: expr_is_lval ( cx. tcx , cx. method_map , expr) {
52
52
return false ;
53
53
}
@@ -61,7 +61,7 @@ fn expr_is_non_moving_lvalue(cx: @AltCheckCtxt, expr: @expr) -> bool {
61
61
}
62
62
}
63
63
64
- fn check_expr( cx : @AltCheckCtxt , ex: @expr, & & s: ( ) , v : visit:: vt < ( ) > ) {
64
+ fn check_expr( cx : @MatchCheckCtxt , ex: @expr, & & s: ( ) , v : visit:: vt < ( ) > ) {
65
65
visit:: visit_expr ( ex, s, v) ;
66
66
match ex. node {
67
67
expr_match( scrut, ref arms) => {
@@ -107,7 +107,7 @@ fn check_expr(cx: @AltCheckCtxt, ex: @expr, &&s: (), v: visit::vt<()>) {
107
107
}
108
108
109
109
// Check for unreachable patterns
110
- fn check_arms( cx: @AltCheckCtxt , arms: ~[ arm] ) {
110
+ fn check_arms( cx: @MatchCheckCtxt , arms: ~[ arm] ) {
111
111
let mut seen = ~[ ] ;
112
112
for arms. each |arm| {
113
113
for arm. pats . each |pat| {
@@ -130,7 +130,7 @@ fn raw_pat(p: @pat) -> @pat {
130
130
}
131
131
}
132
132
133
- fn check_exhaustive ( cx : @AltCheckCtxt , sp : span , pats: ~[ @pat] ) {
133
+ fn check_exhaustive ( cx : @MatchCheckCtxt , sp : span , pats: ~[ @pat] ) {
134
134
assert ( pats. is_not_empty ( ) ) ;
135
135
let ext = match is_useful ( cx, vec:: map ( pats, |p| ~[ * p] ) , ~[ wild ( ) ] ) {
136
136
not_useful => return , // This is good, wildcard pattern isn't reachable
@@ -216,7 +216,7 @@ impl ctor : cmp::Eq {
216
216
217
217
// Note: is_useful doesn't work on empty types, as the paper notes.
218
218
// So it assumes that v is non-empty.
219
- fn is_useful ( cx : @AltCheckCtxt , +m : matrix , +v: ~[ @pat] ) -> useful {
219
+ fn is_useful ( cx : @MatchCheckCtxt , +m : matrix , +v: ~[ @pat] ) -> useful {
220
220
if m. len ( ) == 0 u { return useful_; }
221
221
if m[ 0 ] . len ( ) == 0 u { return not_useful; }
222
222
let real_pat = match vec:: find ( m, |r| r[ 0 ] . id != 0 ) {
@@ -289,7 +289,7 @@ fn is_useful(cx: @AltCheckCtxt, +m: matrix, +v: ~[@pat]) -> useful {
289
289
}
290
290
}
291
291
292
- fn is_useful_specialized ( cx : @AltCheckCtxt , m : matrix , +v : ~[ @pat] ,
292
+ fn is_useful_specialized ( cx : @MatchCheckCtxt , m : matrix , +v : ~[ @pat] ,
293
293
+ctor : ctor , arity : uint , lty : ty:: t ) -> useful {
294
294
let ms = vec:: filter_map ( m, |r| specialize ( cx, * r, ctor, arity, lty) ) ;
295
295
let could_be_useful = is_useful (
@@ -300,7 +300,7 @@ fn is_useful_specialized(cx: @AltCheckCtxt, m: matrix, +v: ~[@pat],
300
300
}
301
301
}
302
302
303
- fn pat_ctor_id ( cx : @AltCheckCtxt , p: @pat) -> Option < ctor > {
303
+ fn pat_ctor_id ( cx : @MatchCheckCtxt , p: @pat) -> Option < ctor > {
304
304
let pat = raw_pat ( p) ;
305
305
match /*bad*/ copy pat. node {
306
306
pat_wild => { None }
@@ -337,7 +337,7 @@ fn pat_ctor_id(cx: @AltCheckCtxt, p: @pat) -> Option<ctor> {
337
337
}
338
338
}
339
339
340
- fn is_wild ( cx : @AltCheckCtxt , p: @pat) -> bool {
340
+ fn is_wild ( cx : @MatchCheckCtxt , p: @pat) -> bool {
341
341
let pat = raw_pat ( p) ;
342
342
match pat. node {
343
343
pat_wild => { true }
@@ -351,7 +351,7 @@ fn is_wild(cx: @AltCheckCtxt, p: @pat) -> bool {
351
351
}
352
352
}
353
353
354
- fn missing_ctor( cx : @AltCheckCtxt ,
354
+ fn missing_ctor( cx : @MatchCheckCtxt ,
355
355
m : matrix ,
356
356
left_ty : ty:: t )
357
357
-> Option < ctor > {
@@ -451,7 +451,7 @@ fn missing_ctor(cx: @AltCheckCtxt,
451
451
}
452
452
}
453
453
454
- fn ctor_arity( cx: @AltCheckCtxt , ctor: ctor, ty: ty:: t) -> uint {
454
+ fn ctor_arity( cx: @MatchCheckCtxt , ctor: ctor, ty: ty:: t) -> uint {
455
455
match /*bad*/ copy ty:: get ( ty) . sty {
456
456
ty:: ty_tup ( fs) => fs. len ( ) ,
457
457
ty:: ty_rec ( fs) => fs. len ( ) ,
@@ -479,7 +479,7 @@ fn wild() -> @pat {
479
479
@{ id: 0 , node: pat_wild, span: ast_util:: dummy_sp ( ) }
480
480
}
481
481
482
- fn specialize( cx : @AltCheckCtxt , r : ~[ @pat] , ctor_id : ctor , arity : uint ,
482
+ fn specialize( cx : @MatchCheckCtxt , r : ~[ @pat] , ctor_id : ctor , arity : uint ,
483
483
left_ty : ty:: t ) -> Option <~[ @pat] > {
484
484
let r0 = raw_pat ( r[ 0 ] ) ;
485
485
match /*bad*/ copy r0. node {
@@ -637,12 +637,12 @@ fn specialize(cx: @AltCheckCtxt, r: ~[@pat], ctor_id: ctor, arity: uint,
637
637
}
638
638
}
639
639
640
- fn default( cx: @AltCheckCtxt , r: ~[ @pat] ) -> Option <~[ @pat] > {
640
+ fn default( cx: @MatchCheckCtxt , r: ~[ @pat] ) -> Option <~[ @pat] > {
641
641
if is_wild( cx, r[ 0 ] ) { Some ( vec:: tail( r) ) }
642
642
else { None }
643
643
}
644
644
645
- fn check_local( cx: @AltCheckCtxt , loc: @local, & & s: ( ) , v: visit:: vt < ( ) > ) {
645
+ fn check_local( cx: @MatchCheckCtxt , loc: @local, & & s: ( ) , v: visit:: vt < ( ) > ) {
646
646
visit:: visit_local( loc, s, v) ;
647
647
if is_refutable( cx, loc. node. pat) {
648
648
cx. tcx. sess. span_err( loc. node. pat. span,
@@ -657,7 +657,7 @@ fn check_local(cx: @AltCheckCtxt, loc: @local, &&s: (), v: visit::vt<()>) {
657
657
check_legality_of_move_bindings ( cx, is_lvalue, false , [ loc. node . pat ] ) ;
658
658
}
659
659
660
- fn check_fn( cx: @AltCheckCtxt ,
660
+ fn check_fn( cx: @MatchCheckCtxt ,
661
661
kind: visit:: fn_kind,
662
662
decl: fn_decl,
663
663
body: blk,
@@ -674,7 +674,7 @@ fn check_fn(cx: @AltCheckCtxt,
674
674
}
675
675
}
676
676
677
- fn is_refutable( cx: @AltCheckCtxt , pat: & pat) -> bool {
677
+ fn is_refutable( cx: @MatchCheckCtxt , pat: & pat) -> bool {
678
678
match cx. tcx. def_map. find( pat. id) {
679
679
Some ( def_variant( enum_id, _) ) => {
680
680
if vec:: len ( * ty:: enum_variants ( cx. tcx , enum_id) ) != 1 u {
@@ -712,7 +712,7 @@ fn is_refutable(cx: @AltCheckCtxt, pat: &pat) -> bool {
712
712
713
713
// Legality of move bindings checking
714
714
715
- fn check_legality_of_move_bindings( cx : @AltCheckCtxt ,
715
+ fn check_legality_of_move_bindings( cx : @MatchCheckCtxt ,
716
716
is_lvalue : bool ,
717
717
has_guard : bool ,
718
718
pats: & [ @pat] ) {
0 commit comments