Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-diagnostics/src/handlers/duplicate_field.rs')
-rw-r--r--crates/ide-diagnostics/src/handlers/duplicate_field.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/crates/ide-diagnostics/src/handlers/duplicate_field.rs b/crates/ide-diagnostics/src/handlers/duplicate_field.rs
index 13d594066d..08748bf8af 100644
--- a/crates/ide-diagnostics/src/handlers/duplicate_field.rs
+++ b/crates/ide-diagnostics/src/handlers/duplicate_field.rs
@@ -81,4 +81,43 @@ fn main() {
"#,
);
}
+
+ #[test]
+ fn duplicate_field_in_struct_pattern() {
+ check_diagnostics(
+ r#"
+struct S { foo: i32, bar: i32 }
+fn f(s: S) {
+ let S {
+ foo,
+ bar,
+ foo,
+ //^^^ error: field specified more than once
+ ..
+ } = s;
+ let _ = (foo, bar);
+}
+"#,
+ );
+ }
+
+ #[test]
+ fn duplicate_field_in_enum_variant_pattern() {
+ check_diagnostics(
+ r#"
+enum E { V { foo: i32, bar: i32 } }
+fn f(e: E) {
+ match e {
+ E::V {
+ foo,
+ bar,
+ foo,
+ //^^^ error: field specified more than once
+ ..
+ } => { let _ = (foo, bar); }
+ }
+}
+"#,
+ );
+ }
}