From b4aa1f2f90f9cd4e7182f9f695835c19d61704c4 Mon Sep 17 00:00:00 2001 From: Douglas Campos Date: Thu, 5 Jul 2018 13:36:17 +0000 Subject: extract helper fn --- src/librustc_resolve/lib.rs | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 992ea12ffa2..958c496d984 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -4232,16 +4232,10 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { } } - /// When name resolution fails, this method can be used to look up candidate - /// entities with the expected name. It allows filtering them using the - /// supplied predicate (which should be used to only accept the types of - /// definitions expected e.g. traits). The lookup spans across all crates. - /// - /// NOTE: The method does not look into imports, but this is not a problem, - /// since we report the definitions (thus, the de-aliased imports). - fn lookup_import_candidates(&mut self, + fn lookup_import_candidates_from_module(&mut self, lookup_name: Name, namespace: Namespace, + start_module: &'a ModuleData<'a>, filter_fn: FilterFn) -> Vec where FilterFn: Fn(Def) -> bool @@ -4249,7 +4243,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { let mut candidates = Vec::new(); let mut worklist = Vec::new(); let mut seen_modules = FxHashSet(); - worklist.push((self.graph_root, Vec::new(), false)); + worklist.push((start_module, Vec::new(), false)); while let Some((in_module, path_segments, @@ -4318,6 +4312,23 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { candidates } + /// When name resolution fails, this method can be used to look up candidate + /// entities with the expected name. It allows filtering them using the + /// supplied predicate (which should be used to only accept the types of + /// definitions expected e.g. traits). The lookup spans across all crates. + /// + /// NOTE: The method does not look into imports, but this is not a problem, + /// since we report the definitions (thus, the de-aliased imports). + fn lookup_import_candidates(&mut self, + lookup_name: Name, + namespace: Namespace, + filter_fn: FilterFn) + -> Vec + where FilterFn: Fn(Def) -> bool + { + self.lookup_import_candidates_from_module(lookup_name, namespace, self.graph_root, filter_fn) + } + fn find_module(&mut self, module_def: Def) -> Option<(Module<'a>, ImportSuggestion)> -- cgit 1.4.1-3-g733a5