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:
Tyler Mandry 2020-09-09 15:05:45 -07:00 committed by GitHub
commit 5ea55518bc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
52 changed files with 126 additions and 105 deletions

View file

@ -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.