1
Fork 0

fix(resolve): skip assertion judgment when NonModule is dummy

This commit is contained in:
bohan 2023-07-01 11:53:31 +08:00
parent e013d8f8b3
commit 549f48d0ed
7 changed files with 32 additions and 4 deletions

View file

@ -370,7 +370,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
/// expansion and import resolution (perhaps they can be merged in the future).
/// The function is used for resolving initial segments of macro paths (e.g., `foo` in
/// `foo::bar!();` or `foo!();`) and also for import paths on 2018 edition.
#[instrument(level = "debug", skip(self, scope_set))]
#[instrument(level = "debug", skip(self))]
pub(crate) fn early_resolve_ident_in_lexical_scope(
&mut self,
orig_ident: Ident,

View file

@ -894,8 +894,9 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
}
return None;
}
PathResult::NonModule(_) => {
if no_ambiguity {
PathResult::NonModule(partial_res) => {
if no_ambiguity && partial_res.full_res() != Some(Res::Err) {
// Check if there are no ambiguities and the result is not dummy.
assert!(import.imported_module.get().is_none());
}
// The error was already reported earlier.

View file

@ -128,7 +128,7 @@ enum Scope<'a> {
/// with different restrictions when looking up the resolution.
/// This enum is currently used only for early resolution (imports and macros),
/// but not for late resolution yet.
#[derive(Clone, Copy)]
#[derive(Clone, Copy, Debug)]
enum ScopeSet<'a> {
/// All scopes with the given namespace.
All(Namespace),