mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 22:31:43 +00:00
hir_ty: iterate_method_candidates_for_self_ty pass visible_from_module
down to iterate_inherent_methods
This commit is contained in:
parent
66d295d72d
commit
ac2a831b2e
1 changed files with 6 additions and 1 deletions
|
@ -420,6 +420,7 @@ fn iterate_method_candidates_impl(
|
||||||
env,
|
env,
|
||||||
krate,
|
krate,
|
||||||
traits_in_scope,
|
traits_in_scope,
|
||||||
|
visible_from_module,
|
||||||
name,
|
name,
|
||||||
callback,
|
callback,
|
||||||
)
|
)
|
||||||
|
@ -537,10 +538,12 @@ fn iterate_method_candidates_for_self_ty(
|
||||||
env: Arc<TraitEnvironment>,
|
env: Arc<TraitEnvironment>,
|
||||||
krate: CrateId,
|
krate: CrateId,
|
||||||
traits_in_scope: &FxHashSet<TraitId>,
|
traits_in_scope: &FxHashSet<TraitId>,
|
||||||
|
visible_from_module: Option<ModuleId>,
|
||||||
name: Option<&Name>,
|
name: Option<&Name>,
|
||||||
mut callback: &mut dyn FnMut(&Ty, AssocItemId) -> bool,
|
mut callback: &mut dyn FnMut(&Ty, AssocItemId) -> bool,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
if iterate_inherent_methods(self_ty, db, name, None, krate, None, &mut callback) {
|
if iterate_inherent_methods(self_ty, db, name, None, krate, visible_from_module, &mut callback)
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
iterate_trait_method_candidates(self_ty, db, env, krate, traits_in_scope, name, None, callback)
|
iterate_trait_method_candidates(self_ty, db, env, krate, traits_in_scope, name, None, callback)
|
||||||
|
@ -577,6 +580,8 @@ fn iterate_trait_method_candidates(
|
||||||
// iteration
|
// iteration
|
||||||
let mut known_implemented = false;
|
let mut known_implemented = false;
|
||||||
for (_name, item) in data.items.iter() {
|
for (_name, item) in data.items.iter() {
|
||||||
|
// Don't pass a `visible_from_module` down to `is_valid_candidate`,
|
||||||
|
// since only inherent methods should be included into visibility checking.
|
||||||
if !is_valid_candidate(db, name, receiver_ty, *item, self_ty, None) {
|
if !is_valid_candidate(db, name, receiver_ty, *item, self_ty, None) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue