diff options
| author | bohan <bohan-zhang@foxmail.com> | 2024-03-01 19:39:07 +0800 |
|---|---|---|
| committer | bohan <bohan-zhang@foxmail.com> | 2024-03-01 19:41:46 +0800 |
| commit | 89954e55e1e8e42d28a506db1aceb7a3eb84a689 (patch) | |
| tree | 3f2d273e1475d16fffee83e7ce77c047ade29071 /compiler/rustc_resolve | |
| parent | 6cbf0926d54c80ea6d15df333be9281f65bbeb36 (diff) | |
| download | rust-89954e55e1e8e42d28a506db1aceb7a3eb84a689.tar.gz rust-89954e55e1e8e42d28a506db1aceb7a3eb84a689.zip | |
only compare ambiguity item that have hard error
Diffstat (limited to 'compiler/rustc_resolve')
| -rw-r--r-- | compiler/rustc_resolve/src/imports.rs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/compiler/rustc_resolve/src/imports.rs b/compiler/rustc_resolve/src/imports.rs index 9bfca0f1798..bd0b2a48562 100644 --- a/compiler/rustc_resolve/src/imports.rs +++ b/compiler/rustc_resolve/src/imports.rs @@ -8,8 +8,8 @@ use crate::errors::{ ItemsInTraitsAreNotImportable, }; use crate::Determinacy::{self, *}; -use crate::Namespace::*; use crate::{module_to_string, names_to_string, ImportSuggestion}; +use crate::{AmbiguityError, Namespace::*}; use crate::{AmbiguityKind, BindingKey, ResolutionError, Resolver, Segment}; use crate::{Finalize, Module, ModuleOrUniformRoot, ParentScope, PerNS, ScopeSet}; use crate::{NameBinding, NameBindingData, NameBindingKind, PathResult, Used}; @@ -538,7 +538,6 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { .chain(indeterminate_imports.iter().map(|i| (true, i))) { let unresolved_import_error = self.finalize_import(*import); - // If this import is unresolved then create a dummy import // resolution for it so that later resolve stages won't complain. self.import_dummy_binding(*import, is_indeterminate); @@ -856,7 +855,9 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { ImportKind::Single { target_bindings, .. } => target_bindings[TypeNS].get(), _ => None, }; - let prev_ambiguity_errors_len = self.ambiguity_errors.len(); + let ambiguity_errors_len = + |errors: &Vec<AmbiguityError<'_>>| errors.iter().filter(|error| !error.warning).count(); + let prev_ambiguity_errors_len = ambiguity_errors_len(&self.ambiguity_errors); let finalize = Finalize::with_root_span(import.root_id, import.span, import.root_span); // We'll provide more context to the privacy errors later, up to `len`. @@ -870,7 +871,8 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { ignore_binding, ); - let no_ambiguity = self.ambiguity_errors.len() == prev_ambiguity_errors_len; + let no_ambiguity = + ambiguity_errors_len(&self.ambiguity_errors) == prev_ambiguity_errors_len; import.vis.set(orig_vis); let module = match path_res { PathResult::Module(module) => { |
