Add macro test for prelude collision suggestions.
This commit is contained in:
parent
a15dab9ce2
commit
fc0fb38b19
45
src/test/ui/rust-2021/future-prelude-collision-macros.fixed
Normal file
45
src/test/ui/rust-2021/future-prelude-collision-macros.fixed
Normal file
@ -0,0 +1,45 @@
|
||||
// run-rustfix
|
||||
// edition:2018
|
||||
// check-pass
|
||||
#![warn(rust_2021_prelude_collisions)]
|
||||
#![allow(unreachable_code)]
|
||||
|
||||
macro_rules! foo {
|
||||
() => {{
|
||||
123;
|
||||
S
|
||||
}};
|
||||
}
|
||||
|
||||
trait MyTry<T> {
|
||||
fn try_into(self, _: u8);
|
||||
}
|
||||
|
||||
struct S;
|
||||
|
||||
impl MyTry<i32> for S {
|
||||
fn try_into(self, _: u8) {}
|
||||
}
|
||||
|
||||
trait TryFromU8: Sized {
|
||||
fn try_from(_: u8);
|
||||
}
|
||||
|
||||
impl TryFromU8 for u32 {
|
||||
fn try_from(_: u8) {}
|
||||
}
|
||||
|
||||
macro_rules! bar {
|
||||
() => {
|
||||
u32
|
||||
};
|
||||
}
|
||||
|
||||
fn main() {
|
||||
MyTry::try_into(foo!(), todo!());
|
||||
//~^ WARNING trait method `try_into` will become ambiguous in Rust 2021
|
||||
//~| WARNING this is accepted in the current edition
|
||||
<bar!() as TryFromU8>::try_from(0);
|
||||
//~^ WARNING trait-associated function `try_from` will become ambiguous in Rust 2021
|
||||
//~| WARNING this is accepted in the current edition
|
||||
}
|
45
src/test/ui/rust-2021/future-prelude-collision-macros.rs
Normal file
45
src/test/ui/rust-2021/future-prelude-collision-macros.rs
Normal file
@ -0,0 +1,45 @@
|
||||
// run-rustfix
|
||||
// edition:2018
|
||||
// check-pass
|
||||
#![warn(rust_2021_prelude_collisions)]
|
||||
#![allow(unreachable_code)]
|
||||
|
||||
macro_rules! foo {
|
||||
() => {{
|
||||
123;
|
||||
S
|
||||
}};
|
||||
}
|
||||
|
||||
trait MyTry<T> {
|
||||
fn try_into(self, _: u8);
|
||||
}
|
||||
|
||||
struct S;
|
||||
|
||||
impl MyTry<i32> for S {
|
||||
fn try_into(self, _: u8) {}
|
||||
}
|
||||
|
||||
trait TryFromU8: Sized {
|
||||
fn try_from(_: u8);
|
||||
}
|
||||
|
||||
impl TryFromU8 for u32 {
|
||||
fn try_from(_: u8) {}
|
||||
}
|
||||
|
||||
macro_rules! bar {
|
||||
() => {
|
||||
u32
|
||||
};
|
||||
}
|
||||
|
||||
fn main() {
|
||||
foo!().try_into(todo!());
|
||||
//~^ WARNING trait method `try_into` will become ambiguous in Rust 2021
|
||||
//~| WARNING this is accepted in the current edition
|
||||
<bar!()>::try_from(0);
|
||||
//~^ WARNING trait-associated function `try_from` will become ambiguous in Rust 2021
|
||||
//~| WARNING this is accepted in the current edition
|
||||
}
|
25
src/test/ui/rust-2021/future-prelude-collision-macros.stderr
Normal file
25
src/test/ui/rust-2021/future-prelude-collision-macros.stderr
Normal file
@ -0,0 +1,25 @@
|
||||
warning: trait method `try_into` will become ambiguous in Rust 2021
|
||||
--> $DIR/future-prelude-collision-macros.rs:39:5
|
||||
|
|
||||
LL | foo!().try_into(todo!());
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: disambiguate the associated function: `MyTry::try_into(foo!(), todo!())`
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/future-prelude-collision-macros.rs:4:9
|
||||
|
|
||||
LL | #![warn(rust_2021_prelude_collisions)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/prelude.html>
|
||||
|
||||
warning: trait-associated function `try_from` will become ambiguous in Rust 2021
|
||||
--> $DIR/future-prelude-collision-macros.rs:42:5
|
||||
|
|
||||
LL | <bar!()>::try_from(0);
|
||||
| ^^^^^^^^^^^^^^^^^^ help: disambiguate the associated function: `<bar!() as TryFromU8>::try_from`
|
||||
|
|
||||
= warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
|
||||
= note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/prelude.html>
|
||||
|
||||
warning: 2 warnings emitted
|
||||
|
Loading…
x
Reference in New Issue
Block a user