From 5a8a0b62697c01ef881e7e2a0387e3649cab2034 Mon Sep 17 00:00:00 2001 From: Dawer <7803845+iDawer@users.noreply.github.com> Date: Fri, 30 Apr 2021 19:12:04 +0500 Subject: Check enum patterns --- crates/hir_ty/src/diagnostics/pattern.rs | 45 ++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'crates/hir_ty/src/diagnostics/pattern.rs') 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 @@ -73,6 +73,51 @@ fn main(v: S) { match v { } //^ Missing match arm } +"#, + ); + } + + #[test] + fn c_enum() { + check_diagnostics( + r#" +enum E { A, B } +fn main(v: E) { + match v { E::A | E::B => {} } + match v { _ => {} } + match v { E::A => {} } + //^ Missing match arm + match v { } + //^ Missing match arm +} +"#, + ); + } + + #[test] + fn enum_() { + check_diagnostics( + r#" +struct A; struct B; +enum E { Tuple(A, B), Struct{ a: A, b: B } } +fn main(v: E) { + match v { + E::Tuple(a, b) => {} + E::Struct{ a, b } => {} + } + match v { + E::Tuple(_, _) => {} + E::Struct{..} => {} + } + match v { + E::Tuple(..) => {} + _ => {} + } + match v { E::Tuple(..) => {} } + //^ Missing match arm + match v { } + //^ Missing match arm +} "#, ); } -- cgit v1.2.3