aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src/diagnostics/pattern.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir_ty/src/diagnostics/pattern.rs')
-rw-r--r--crates/hir_ty/src/diagnostics/pattern.rs45
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#"
84enum E { A, B }
85fn 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#"
101struct A; struct B;
102enum E { Tuple(A, B), Struct{ a: A, b: B } }
103fn 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}