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.rs | 39 |
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); } + } +} +"#, + ); + } } |