File tree Expand file tree Collapse file tree 3 files changed +81
-0
lines changed Expand file tree Collapse file tree 3 files changed +81
-0
lines changed Original file line number Diff line number Diff line change 1+ // See https://github.com/rust-lang/rust/issues/88442
2+ // run-rustfix
3+ // edition:2018
4+ // check-pass
5+ #![allow(unused)]
6+ #![warn(rust_2021_prelude_collisions)]
7+
8+ trait AnnotatableTryInto {
9+ fn try_into<T>(self) -> Result<T, Self::Error>
10+ where Self: std::convert::TryInto<T> {
11+ std::convert::TryInto::try_into(self)
12+ }
13+ }
14+
15+ impl<T> AnnotatableTryInto for T where T: From<u8> {}
16+
17+ fn main() -> Result<(), &'static str> {
18+ let x: u64 = 1;
19+ AnnotatableTryInto::try_into::<usize>(x).or(Err("foo"))?.checked_sub(1);
20+ //~^ WARNING trait method `try_into` will become ambiguous in Rust 2021
21+ //~| WARNING this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
22+
23+ AnnotatableTryInto::try_into::<usize>(x).or(Err("foo"))?;
24+ //~^ WARNING trait method `try_into` will become ambiguous in Rust 2021
25+ //~| WARNING this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
26+
27+ Ok(())
28+ }
Original file line number Diff line number Diff line change 1+ // See https://github.com/rust-lang/rust/issues/88442
2+ // run-rustfix
3+ // edition:2018
4+ // check-pass
5+ #![ allow( unused) ]
6+ #![ warn( rust_2021_prelude_collisions) ]
7+
8+ trait AnnotatableTryInto {
9+ fn try_into < T > ( self ) -> Result < T , Self :: Error >
10+ where Self : std:: convert:: TryInto < T > {
11+ std:: convert:: TryInto :: try_into ( self )
12+ }
13+ }
14+
15+ impl < T > AnnotatableTryInto for T where T : From < u8 > { }
16+
17+ fn main ( ) -> Result < ( ) , & ' static str > {
18+ let x: u64 = 1 ;
19+ x. try_into :: < usize > ( ) . or ( Err ( "foo" ) ) ?. checked_sub ( 1 ) ;
20+ //~^ WARNING trait method `try_into` will become ambiguous in Rust 2021
21+ //~| WARNING this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
22+
23+ x. try_into :: < usize > ( ) . or ( Err ( "foo" ) ) ?;
24+ //~^ WARNING trait method `try_into` will become ambiguous in Rust 2021
25+ //~| WARNING this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
26+
27+ Ok ( ( ) )
28+ }
Original file line number Diff line number Diff line change 1+ warning: trait method `try_into` will become ambiguous in Rust 2021
2+ --> $DIR/future-prelude-collision-turbofish.rs:19:5
3+ |
4+ LL | x.try_into::<usize>().or(Err("foo"))?.checked_sub(1);
5+ | ^^^^^^^^^^^^^^^^^^^^^ help: disambiguate the associated function: `AnnotatableTryInto::try_into::<usize>(x)`
6+ |
7+ note: the lint level is defined here
8+ --> $DIR/future-prelude-collision-turbofish.rs:6:9
9+ |
10+ LL | #![warn(rust_2021_prelude_collisions)]
11+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
12+ = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
13+ = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/prelude.html>
14+
15+ warning: trait method `try_into` will become ambiguous in Rust 2021
16+ --> $DIR/future-prelude-collision-turbofish.rs:23:5
17+ |
18+ LL | x.try_into::<usize>().or(Err("foo"))?;
19+ | ^^^^^^^^^^^^^^^^^^^^^ help: disambiguate the associated function: `AnnotatableTryInto::try_into::<usize>(x)`
20+ |
21+ = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
22+ = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/prelude.html>
23+
24+ warning: 2 warnings emitted
25+
You can’t perform that action at this time.
0 commit comments