Rollup merge of #75984 - kornelski:typeormodule, r=matthewjasper
Improve unresolved use error message "use of undeclared type or module `foo`" doesn't mention that it could be a crate. This error can happen when users forget to add a dependency to `Cargo.toml`, so I think it's important to mention that it could be a missing crate. I've used a heuristic based on Rust's naming conventions. It complains about an unknown type if the ident starts with an upper-case letter, and crate or module otherwise. It seems to work very well. The expanded error help covers both an unknown type and a missing crate case.
This commit is contained in:
commit
5ea55518bc
52 changed files with 126 additions and 105 deletions
|
@ -1,17 +1,27 @@
|
|||
An undeclared type or module was used.
|
||||
An undeclared crate, module, or type was used.
|
||||
|
||||
Erroneous code example:
|
||||
|
||||
```compile_fail,E0433
|
||||
let map = HashMap::new();
|
||||
// error: failed to resolve: use of undeclared type or module `HashMap`
|
||||
// error: failed to resolve: use of undeclared type `HashMap`
|
||||
```
|
||||
|
||||
Please verify you didn't misspell the type/module's name or that you didn't
|
||||
forget to import it:
|
||||
|
||||
|
||||
```
|
||||
use std::collections::HashMap; // HashMap has been imported.
|
||||
let map: HashMap<u32, u32> = HashMap::new(); // So it can be used!
|
||||
```
|
||||
|
||||
If you've expected to use a crate name:
|
||||
|
||||
```compile_fail
|
||||
use ferris_wheel::BigO;
|
||||
// error: failed to resolve: use of undeclared crate or module `ferris_wheel`
|
||||
```
|
||||
|
||||
Make sure the crate has been added as a dependency in `Cargo.toml`.
|
||||
|
||||
To use a module from your current crate, add the `crate::` prefix to the path.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue