aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/nameres/lower.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/nameres/lower.rs')
-rw-r--r--crates/ra_hir/src/nameres/lower.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/crates/ra_hir/src/nameres/lower.rs b/crates/ra_hir/src/nameres/lower.rs
index 3cd496d7f..922dbe9c1 100644
--- a/crates/ra_hir/src/nameres/lower.rs
+++ b/crates/ra_hir/src/nameres/lower.rs
@@ -2,7 +2,7 @@ use std::sync::Arc;
2 2
3use ra_syntax::{ 3use ra_syntax::{
4 AstNode, SourceFile, TreeArc, AstPtr, 4 AstNode, SourceFile, TreeArc, AstPtr,
5 ast::{self, ModuleItemOwner, NameOwner}, 5 ast::{self, ModuleItemOwner, NameOwner, AttrsOwner},
6}; 6};
7use ra_arena::{Arena, RawId, impl_arena_id, map::ArenaMap}; 7use ra_arena::{Arena, RawId, impl_arena_id, map::ArenaMap};
8use rustc_hash::FxHashMap; 8use rustc_hash::FxHashMap;
@@ -23,6 +23,7 @@ pub(super) struct ImportData {
23 pub(super) path: Path, 23 pub(super) path: Path,
24 pub(super) alias: Option<Name>, 24 pub(super) alias: Option<Name>,
25 pub(super) is_glob: bool, 25 pub(super) is_glob: bool,
26 pub(super) is_prelude: bool,
26 pub(super) is_extern_crate: bool, 27 pub(super) is_extern_crate: bool,
27} 28}
28 29
@@ -191,6 +192,7 @@ impl LoweredModule {
191 path, 192 path,
192 alias, 193 alias,
193 is_glob: false, 194 is_glob: false,
195 is_prelude: false,
194 is_extern_crate: true, 196 is_extern_crate: true,
195 }); 197 });
196 } 198 }
@@ -214,11 +216,14 @@ impl LoweredModule {
214 } 216 }
215 217
216 fn add_use_item(&mut self, source_map: &mut ImportSourceMap, item: &ast::UseItem) { 218 fn add_use_item(&mut self, source_map: &mut ImportSourceMap, item: &ast::UseItem) {
219 let is_prelude =
220 item.attrs().any(|attr| attr.as_atom().map(|s| s == "prelude_import").unwrap_or(false));
217 Path::expand_use_item(item, |path, segment, alias| { 221 Path::expand_use_item(item, |path, segment, alias| {
218 let import = self.imports.alloc(ImportData { 222 let import = self.imports.alloc(ImportData {
219 path, 223 path,
220 alias, 224 alias,
221 is_glob: segment.is_none(), 225 is_glob: segment.is_none(),
226 is_prelude,
222 is_extern_crate: false, 227 is_extern_crate: false,
223 }); 228 });
224 if let Some(segment) = segment { 229 if let Some(segment) = segment {