diff options
Diffstat (limited to 'crates/hir_ty/src/diagnostics/pattern.rs')
-rw-r--r-- | crates/hir_ty/src/diagnostics/pattern.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/crates/hir_ty/src/diagnostics/pattern.rs b/crates/hir_ty/src/diagnostics/pattern.rs index 4dcbd7f9f..3e90461cc 100644 --- a/crates/hir_ty/src/diagnostics/pattern.rs +++ b/crates/hir_ty/src/diagnostics/pattern.rs | |||
@@ -76,4 +76,49 @@ fn main(v: S) { | |||
76 | "#, | 76 | "#, |
77 | ); | 77 | ); |
78 | } | 78 | } |
79 | |||
80 | #[test] | ||
81 | fn c_enum() { | ||
82 | check_diagnostics( | ||
83 | r#" | ||
84 | enum E { A, B } | ||
85 | fn main(v: E) { | ||
86 | match v { E::A | E::B => {} } | ||
87 | match v { _ => {} } | ||
88 | match v { E::A => {} } | ||
89 | //^ Missing match arm | ||
90 | match v { } | ||
91 | //^ Missing match arm | ||
92 | } | ||
93 | "#, | ||
94 | ); | ||
95 | } | ||
96 | |||
97 | #[test] | ||
98 | fn enum_() { | ||
99 | check_diagnostics( | ||
100 | r#" | ||
101 | struct A; struct B; | ||
102 | enum E { Tuple(A, B), Struct{ a: A, b: B } } | ||
103 | fn main(v: E) { | ||
104 | match v { | ||
105 | E::Tuple(a, b) => {} | ||
106 | E::Struct{ a, b } => {} | ||
107 | } | ||
108 | match v { | ||
109 | E::Tuple(_, _) => {} | ||
110 | E::Struct{..} => {} | ||
111 | } | ||
112 | match v { | ||
113 | E::Tuple(..) => {} | ||
114 | _ => {} | ||
115 | } | ||
116 | match v { E::Tuple(..) => {} } | ||
117 | //^ Missing match arm | ||
118 | match v { } | ||
119 | //^ Missing match arm | ||
120 | } | ||
121 | "#, | ||
122 | ); | ||
123 | } | ||
79 | } | 124 | } |