Skip to content

Commit

Permalink
Unrolled build for rust-lang#117964
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#117964 - estebank:issue-81232, r=petrochenkov

When using existing fn as module, don't claim it doesn't exist

Tweak wording of module not found in resolve, when the name exists but belongs to a non-`mod` item.

Fix rust-lang#81232.
  • Loading branch information
rust-timer authored Nov 18, 2023
2 parents 2831701 + 890ce26 commit 35b762c
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 4 deletions.
14 changes: 13 additions & 1 deletion compiler/rustc_resolve/src/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2028,7 +2028,19 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
},
)
});
(format!("use of undeclared crate or module `{ident}`"), suggestion)
if let Ok(binding) = self.early_resolve_ident_in_lexical_scope(
ident,
ScopeSet::All(ValueNS),
parent_scope,
None,
false,
ignore_binding,
) {
let descr = binding.res().descr();
(format!("{descr} `{ident}` is not a crate or module"), suggestion)
} else {
(format!("use of undeclared crate or module `{ident}`"), suggestion)
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion tests/ui/suggestions/crate-or-module-typo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
use st::cell::Cell; //~ ERROR failed to resolve: use of undeclared crate or module `st`

mod bar {
pub fn bar() { bar::baz(); } //~ ERROR failed to resolve: use of undeclared crate or module `bar`
pub fn bar() { bar::baz(); } //~ ERROR failed to resolve: function `bar` is not a crate or module

fn baz() {}
}
Expand Down
4 changes: 2 additions & 2 deletions tests/ui/suggestions/crate-or-module-typo.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ LL - bar: st::cell::Cell<bool>
LL + bar: cell::Cell<bool>
|

error[E0433]: failed to resolve: use of undeclared crate or module `bar`
error[E0433]: failed to resolve: function `bar` is not a crate or module
--> $DIR/crate-or-module-typo.rs:6:20
|
LL | pub fn bar() { bar::baz(); }
| ^^^ use of undeclared crate or module `bar`
| ^^^ function `bar` is not a crate or module

error: aborting due to 4 previous errors

Expand Down

0 comments on commit 35b762c

Please sign in to comment.