diff options
| author | Douglas Campos <qmx@qmx.me> | 2018-08-10 02:14:06 +0000 |
|---|---|---|
| committer | Douglas Campos <qmx@qmx.me> | 2018-08-16 19:21:16 +0000 |
| commit | 2fcabf2dd7fb71617d9af078cc64245fc790823f (patch) | |
| tree | 55103d44c5415b10f3ec22da89f39a5cf54818f8 | |
| parent | bfbbe6d426f33439d9c5fb6d592bcde10953411f (diff) | |
| download | rust-2fcabf2dd7fb71617d9af078cc64245fc790823f.tar.gz rust-2fcabf2dd7fb71617d9af078cc64245fc790823f.zip | |
look into extern prelude to provide sugestions
| -rw-r--r-- | src/librustc_resolve/lib.rs | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 6a2b595e3e7..a1338710b6b 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -4331,9 +4331,29 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { -> Vec<ImportSuggestion> where FilterFn: Fn(Def) -> bool { - self.lookup_import_candidates_from_module( - lookup_name, namespace, self.graph_root, true, filter_fn - ) + let mut suggestions = vec![]; + + suggestions.extend( + self.lookup_import_candidates_from_module( + lookup_name, namespace, self.graph_root, keywords::Crate.name(), filter_fn + ) + ); + + if self.session.features_untracked().extern_prelude { + let extern_prelude_names = self.extern_prelude.clone(); + for &krate_name in extern_prelude_names.iter() { + let krate_ident = Ident::with_empty_ctxt(krate_name); + let external_prelude_module = self.load_extern_prelude_crate_if_needed(krate_ident); + + suggestions.extend( + self.lookup_import_candidates_from_module( + lookup_name, namespace, external_prelude_module, krate_name, filter_fn + ) + ); + } + } + + suggestions } fn find_module(&mut self, |
