Repository: rust
Issue: Invalid diagnostic when executing Type associated function inside of module but module is not found (misspelled / not imported)
Labels: A-diagnostics,T-compiler

When trying to execute an associated function in a type by using the path starting from the module, but the module is incorrect / doesn't exist and a type with that exact name exists, the error says "use of undeclared crate or module" (correct) but the detailed diagnostic shows "Struct not found in module" (incorrect), as if the module existed. A little confusing, better shown by code:

Given the following code: [playground](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20function()%20%7B%0A%20%20%20%20wrong_module_name%3A%3AStruct%3A%3Amethod()%3B%0A%7D%0A%0Amod%20mod_1%20%7B%0A%20%20%20%20pub%20struct%20Struct%3B%0A%0A%20%20%20%20impl%20Struct%20%7B%0A%20%20%20%20%20%20%20%20fn%20method()%20%7B%7D%0A%20%20%20%20%7D%0A%7D%0A)

```rust
fn function() {
    wrong_module_name::Struct::method();
}

mod mod_1 {
    pub struct Struct;

    impl Struct {
        fn method() {}
    }
}
```

The current output is:

```
error[E0433]: failed to resolve: use of undeclared crate or module `wrong_module_name`
 --> src/lib.rs:2:24
  |
2 |     wrong_module_name::Struct::method();
  |                        ^^^^^^ not found in `wrong_module_name`
  |
help: consider importing one of these items
  |
1 | use crate::mod_1::Struct;
  |
```

Also, the suggestion would not work.

Ideally the output should look like:

```
error[E0433]: failed to resolve: use of undeclared crate or module `wrong_module_name`
 --> src/lib.rs:2:5
  |
2 |     wrong_module_name::Struct::method();
  |     ^^^^^^^^^^^^^^^^^ use of undeclared crate or module `wrong_module_name`
```

Reproduced at least on 1.52.0, beta and nightly-2021-08-06.

Does reproduce the error:
- [Same code as above](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20function()%20%7B%0A%20%20%20%20wrong_module_name%3A%3AStruct%3A%3Amethod()%3B%0A%7D%0A%0Amod%20mod_1%20%7B%0A%20%20%20%20pub%20struct%20Struct%3B%0A%0A%20%20%20%20impl%20Struct%20%7B%0A%20%20%20%20%20%20%20%20fn%20method()%20%7B%7D%0A%20%20%20%20%7D%0A%7D%0A)
- [Method does not exist](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20function()%20%7B%0A%20%20%20%20wrong_module_name%3A%3AStruct%3A%3Amethod()%3B%0A%7D%0A%0Amod%20mod_1%20%7B%0A%20%20%20%20pub%20struct%20Struct%3B%0A%7D%0A)
- [Struct defined in outside module (in syn as the playground includes it in their dependencies)](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20function()%20%7B%0A%20%20%20%20wrong_module_name%3A%3AStruct%3A%3Amethod()%3B%0A%7D%0A)
- [Correct module name but not imported](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=mod%20mod_0%20%7B%0A%20%20%20%20fn%20function()%20%7B%0A%20%20%20%20%20%20%20%20mod_1%3A%3AStruct%3A%3Amethod()%3B%0A%20%20%20%20%7D%0A%7D%0A%0Amod%20mod_1%20%7B%0A%20%20%20%20pub%20struct%20Struct%3B%0A%0A%20%20%20%20impl%20Struct%20%7B%0A%20%20%20%20%20%20%20%20fn%20method()%20%7B%7D%0A%20%20%20%20%7D%0A%7D%0A)
- [Enum instead of Struct](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20function()%20%7B%0A%20%20%20%20wrong_module_name%3A%3AMyEnum%3A%3Amethod()%3B%0A%7D%0A%0Amod%20mod_1%20%7B%0A%20%20%20%20pub%20enum%20MyEnum%20%7B%7D%0A%0A%20%20%20%20impl%20MyEnum%20%7B%0A%20%20%20%20%20%20%20%20fn%20method()%20%7B%7D%0A%20%20%20%20%7D%0A%7D%0A)
- [Type alias with that name exists](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20function()%20%7B%0A%20%20%20%20wrong_module_name%3A%3AMyStruct%3A%3Amethod()%3B%0A%7D%0A%0Amod%20mod_1%20%7B%0A%20%20%20%20type%20MyStruct%20%3D%20Struct%3B%0A%20%20%20%20struct%20Struct%3B%0A%0A%20%20%20%20impl%20Struct%20%7B%0A%20%20%20%20%20%20%20%20fn%20method()%20%7B%7D%0A%20%20%20%20%7D%0A%7D%0A)

Does **not** reproduce the error:
- [No method call](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20function()%20%7B%0A%20%20%20%20wrong_module_name%3A%3AStruct%3B%0A%7D%0A%0Amod%20mod_1%20%7B%0A%20%20%20%20pub%20struct%20Struct%3B%0A%7D%0A)
- [Using module instead of struct for namespacing](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20function()%20%7B%0A%20%20%20%20wrong_module_name%3A%3Amod_2%3A%3Amethod()%3B%0A%7D%0A%0Amod%20mod_1%20%7B%0A%20%20%20%20mod%20mod_2%20%7B%0A%20%20%20%20%20%20%20%20fn%20method()%20%7B%7D%0A%20%20%20%20%7D%0A%7D%0A)
- [No struct with that name exists](https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&code=fn%20function()%20%7B%0A%20%20%20%20wrong_module_name%3A%3AStruct42%3A%3Amethod()%3B%0A%7D%0A)