make duplicate matcher bindings a hard error

This commit is contained in:
Mark Mansi 2019-03-28 12:36:13 -05:00
parent 96d700f1b7
commit d7f5c50a33
7 changed files with 44 additions and 59 deletions

View file

@ -1,16 +1,12 @@
// Test that duplicate matcher binding names are caught at declaration time, rather than at macro
// invocation time.
//
// FIXME(mark-i-m): Update this when it becomes a hard error.
// compile-pass
#![allow(unused_macros)]
#![warn(duplicate_matcher_binding_name)]
macro_rules! foo1 {
($a:ident, $a:ident) => {}; //~WARNING duplicate matcher binding
($a:ident, $a:path) => {}; //~WARNING duplicate matcher binding
($a:ident, $a:ident) => {}; //~ERROR duplicate matcher binding
($a:ident, $a:path) => {}; //~ERROR duplicate matcher binding
}
macro_rules! foo2 {
@ -19,8 +15,8 @@ macro_rules! foo2 {
}
macro_rules! foo3 {
($a:ident, $($a:ident),*) => {}; //~WARNING duplicate matcher binding
($($a:ident)+ # $($($a:path),+);*) => {}; //~WARNING duplicate matcher binding
($a:ident, $($a:ident),*) => {}; //~ERROR duplicate matcher binding
($($a:ident)+ # $($($a:path),+);*) => {}; //~ERROR duplicate matcher binding
}
fn main() {}

View file

@ -1,41 +1,50 @@
warning: duplicate matcher binding
--> $DIR/macro-multiple-matcher-bindings.rs:12:6
error: duplicate matcher binding
--> $DIR/macro-multiple-matcher-bindings.rs:7:16
|
LL | ($a:ident, $a:ident) => {};
| ^^^^^^^^ ^^^^^^^^
| ^^^^^^^^
|
note: lint level defined here
--> $DIR/macro-multiple-matcher-bindings.rs:9:9
note: previous declaration was here
--> $DIR/macro-multiple-matcher-bindings.rs:7:6
|
LL | #![warn(duplicate_matcher_binding_name)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #57593 <https://github.com/rust-lang/rust/issues/57593>
LL | ($a:ident, $a:ident) => {};
| ^^^^^^^^
warning: duplicate matcher binding
--> $DIR/macro-multiple-matcher-bindings.rs:13:6
error: duplicate matcher binding
--> $DIR/macro-multiple-matcher-bindings.rs:8:16
|
LL | ($a:ident, $a:path) => {};
| ^^^^^^^^ ^^^^^^^
| ^^^^^^^
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #57593 <https://github.com/rust-lang/rust/issues/57593>
note: previous declaration was here
--> $DIR/macro-multiple-matcher-bindings.rs:8:6
|
LL | ($a:ident, $a:path) => {};
| ^^^^^^^^
warning: duplicate matcher binding
--> $DIR/macro-multiple-matcher-bindings.rs:22:6
error: duplicate matcher binding
--> $DIR/macro-multiple-matcher-bindings.rs:17:18
|
LL | ($a:ident, $($a:ident),*) => {};
| ^^^^^^^^ ^^^^^^^^
| ^^^^^^^^
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #57593 <https://github.com/rust-lang/rust/issues/57593>
note: previous declaration was here
--> $DIR/macro-multiple-matcher-bindings.rs:17:6
|
LL | ($a:ident, $($a:ident),*) => {};
| ^^^^^^^^
warning: duplicate matcher binding
--> $DIR/macro-multiple-matcher-bindings.rs:23:8
error: duplicate matcher binding
--> $DIR/macro-multiple-matcher-bindings.rs:18:25
|
LL | ($($a:ident)+ # $($($a:path),+);*) => {};
| ^^^^^^^^ ^^^^^^^
| ^^^^^^^
|
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #57593 <https://github.com/rust-lang/rust/issues/57593>
note: previous declaration was here
--> $DIR/macro-multiple-matcher-bindings.rs:18:8
|
LL | ($($a:ident)+ # $($($a:path),+);*) => {};
| ^^^^^^^^
error: aborting due to 4 previous errors