Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-diagnostics/src/handlers/missing_match_arms.rs')
-rw-r--r--crates/ide-diagnostics/src/handlers/missing_match_arms.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/crates/ide-diagnostics/src/handlers/missing_match_arms.rs b/crates/ide-diagnostics/src/handlers/missing_match_arms.rs
index 97296278c3..f39738f2fb 100644
--- a/crates/ide-diagnostics/src/handlers/missing_match_arms.rs
+++ b/crates/ide-diagnostics/src/handlers/missing_match_arms.rs
@@ -1032,6 +1032,44 @@ fn f() {
check_diagnostics_no_bails(&code);
}
+ #[test]
+ fn min_exhaustive() {
+ check_diagnostics(
+ r#"
+//- minicore: result
+fn test(x: Result<i32, !>) {
+ match x {
+ Ok(_y) => {}
+ }
+}
+"#,
+ );
+ check_diagnostics(
+ r#"
+//- minicore: result
+fn test(ptr: *const Result<i32, !>) {
+ unsafe {
+ match *ptr {
+ //^^^^ error: missing match arm: `Err(!)` not covered
+ Ok(_x) => {}
+ }
+ }
+}
+"#,
+ );
+ check_diagnostics(
+ r#"
+//- minicore: result
+fn test(x: Result<i32, &'static !>) {
+ match x {
+ //^ error: missing match arm: `Err(_)` not covered
+ Ok(_y) => {}
+ }
+}
+"#,
+ );
+ }
+
mod rust_unstable {
use super::*;