-
Notifications
You must be signed in to change notification settings - Fork 12.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of #90288 - JakobDegen:import_diagnostics, r=davidtwco
Add hint for people missing `TryFrom`, `TryInto`, `FromIterator` import pre-2021 Adds a hint anytime a `TryFrom`, `TryInto`, `FromIterator` import is suggested noting that these traits are automatically imported in Edition 2021.
- Loading branch information
Showing
6 changed files
with
172 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
// Make sure that trying to access `TryInto`, `TryFrom`, `FromIterator` in pre-2021 mentions | ||
// Edition 2021 change | ||
// edition:2018 | ||
|
||
fn test() { | ||
let _i: i16 = 0_i32.try_into().unwrap(); | ||
//~^ ERROR no method named `try_into` found for type `i32` in the current scope | ||
//~| NOTE method not found in `i32` | ||
//~| NOTE 'std::convert::TryInto' is included in the prelude starting in Edition 2021 | ||
|
||
let _i: i16 = TryFrom::try_from(0_i32).unwrap(); | ||
//~^ ERROR failed to resolve: use of undeclared type | ||
//~| NOTE not found in this scope | ||
//~| NOTE 'std::convert::TryFrom' is included in the prelude starting in Edition 2021 | ||
//~| NOTE 'core::convert::TryFrom' is included in the prelude starting in Edition 2021 | ||
|
||
let _i: i16 = TryInto::try_into(0_i32).unwrap(); | ||
//~^ ERROR failed to resolve: use of undeclared type | ||
//~| NOTE not found in this scope | ||
//~| NOTE 'std::convert::TryInto' is included in the prelude starting in Edition 2021 | ||
//~| NOTE 'core::convert::TryInto' is included in the prelude starting in Edition 2021 | ||
|
||
let _v: Vec<_> = FromIterator::from_iter(&[1]); | ||
//~^ ERROR failed to resolve: use of undeclared type | ||
//~| NOTE 'std::iter::FromIterator' is included in the prelude starting in Edition 2021 | ||
//~| NOTE 'core::iter::FromIterator' is included in the prelude starting in Edition 2021 | ||
} | ||
|
||
fn main() { | ||
test(); | ||
} |
76 changes: 76 additions & 0 deletions
76
src/test/ui/suggestions/suggest-tryinto-edition-change.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
error[E0433]: failed to resolve: use of undeclared type `TryFrom` | ||
--> $DIR/suggest-tryinto-edition-change.rs:11:19 | ||
| | ||
LL | let _i: i16 = TryFrom::try_from(0_i32).unwrap(); | ||
| ^^^^^^^ not found in this scope | ||
| | ||
= note: 'std::convert::TryFrom' is included in the prelude starting in Edition 2021 | ||
= note: 'core::convert::TryFrom' is included in the prelude starting in Edition 2021 | ||
help: consider importing one of these items | ||
| | ||
LL | use core::convert::TryFrom; | ||
| | ||
LL | use std::convert::TryFrom; | ||
| | ||
|
||
error[E0433]: failed to resolve: use of undeclared type `TryInto` | ||
--> $DIR/suggest-tryinto-edition-change.rs:17:19 | ||
| | ||
LL | let _i: i16 = TryInto::try_into(0_i32).unwrap(); | ||
| ^^^^^^^ not found in this scope | ||
| | ||
= note: 'std::convert::TryInto' is included in the prelude starting in Edition 2021 | ||
= note: 'core::convert::TryInto' is included in the prelude starting in Edition 2021 | ||
help: consider importing one of these items | ||
| | ||
LL | use core::convert::TryInto; | ||
| | ||
LL | use std::convert::TryInto; | ||
| | ||
|
||
error[E0433]: failed to resolve: use of undeclared type `FromIterator` | ||
--> $DIR/suggest-tryinto-edition-change.rs:23:22 | ||
| | ||
LL | let _v: Vec<_> = FromIterator::from_iter(&[1]); | ||
| ^^^^^^^^^^^^ | ||
| | ||
::: $SRC_DIR/core/src/iter/traits/collect.rs:LL:COL | ||
| | ||
LL | pub trait IntoIterator { | ||
| ---------------------- similarly named trait `IntoIterator` defined here | ||
| | ||
= note: 'std::iter::FromIterator' is included in the prelude starting in Edition 2021 | ||
= note: 'core::iter::FromIterator' is included in the prelude starting in Edition 2021 | ||
help: a trait with a similar name exists | ||
| | ||
LL | let _v: Vec<_> = IntoIterator::from_iter(&[1]); | ||
| ~~~~~~~~~~~~ | ||
help: consider importing one of these items | ||
| | ||
LL | use core::iter::FromIterator; | ||
| | ||
LL | use std::iter::FromIterator; | ||
| | ||
|
||
error[E0599]: no method named `try_into` found for type `i32` in the current scope | ||
--> $DIR/suggest-tryinto-edition-change.rs:6:25 | ||
| | ||
LL | let _i: i16 = 0_i32.try_into().unwrap(); | ||
| ^^^^^^^^ method not found in `i32` | ||
| | ||
::: $SRC_DIR/core/src/convert/mod.rs:LL:COL | ||
| | ||
LL | fn try_into(self) -> Result<T, Self::Error>; | ||
| -------- the method is available for `i32` here | ||
| | ||
= help: items from traits can only be used if the trait is in scope | ||
= note: 'std::convert::TryInto' is included in the prelude starting in Edition 2021 | ||
help: the following trait is implemented but not in scope; perhaps add a `use` for it: | ||
| | ||
LL | use std::convert::TryInto; | ||
| | ||
|
||
error: aborting due to 4 previous errors | ||
|
||
Some errors have detailed explanations: E0433, E0599. | ||
For more information about an error, try `rustc --explain E0433`. |