diff options
Diffstat (limited to 'crates/ra_hir_def/src/nameres')
-rw-r--r-- | crates/ra_hir_def/src/nameres/collector.rs | 7 | ||||
-rw-r--r-- | crates/ra_hir_def/src/nameres/raw.rs | 20 |
2 files changed, 12 insertions, 15 deletions
diff --git a/crates/ra_hir_def/src/nameres/collector.rs b/crates/ra_hir_def/src/nameres/collector.rs index 193067f73..6352c71ef 100644 --- a/crates/ra_hir_def/src/nameres/collector.rs +++ b/crates/ra_hir_def/src/nameres/collector.rs | |||
@@ -22,7 +22,7 @@ use crate::{ | |||
22 | diagnostics::DefDiagnostic, mod_resolution::ModDir, path_resolution::ReachedFixedPoint, | 22 | diagnostics::DefDiagnostic, mod_resolution::ModDir, path_resolution::ReachedFixedPoint, |
23 | raw, BuiltinShadowMode, CrateDefMap, ModuleData, ModuleOrigin, ResolveMode, | 23 | raw, BuiltinShadowMode, CrateDefMap, ModuleData, ModuleOrigin, ResolveMode, |
24 | }, | 24 | }, |
25 | path::{ModPath, PathKind}, | 25 | path::{ImportAlias, ModPath, PathKind}, |
26 | per_ns::PerNs, | 26 | per_ns::PerNs, |
27 | visibility::Visibility, | 27 | visibility::Visibility, |
28 | AdtId, AstId, ConstLoc, ContainerId, EnumLoc, EnumVariantId, FunctionLoc, ImplLoc, Intern, | 28 | AdtId, AstId, ConstLoc, ContainerId, EnumLoc, EnumVariantId, FunctionLoc, ImplLoc, Intern, |
@@ -439,8 +439,9 @@ where | |||
439 | match import.path.segments.last() { | 439 | match import.path.segments.last() { |
440 | Some(last_segment) => { | 440 | Some(last_segment) => { |
441 | let name = match &import.alias { | 441 | let name = match &import.alias { |
442 | raw::ImportAlias::Alias(name) => name.clone(), | 442 | Some(ImportAlias::Alias(name)) => name.clone(), |
443 | _ => last_segment.clone(), // "use as ;" and "use as _;" are treated the same way | 443 | Some(ImportAlias::Underscore) => last_segment.clone(), // FIXME rust-analyzer#2736 |
444 | None => last_segment.clone(), | ||
444 | }; | 445 | }; |
445 | log::debug!("resolved import {:?} ({:?}) to {:?}", name, import, def); | 446 | log::debug!("resolved import {:?} ({:?}) to {:?}", name, import, def); |
446 | 447 | ||
diff --git a/crates/ra_hir_def/src/nameres/raw.rs b/crates/ra_hir_def/src/nameres/raw.rs index f068b4d4e..650cf1f98 100644 --- a/crates/ra_hir_def/src/nameres/raw.rs +++ b/crates/ra_hir_def/src/nameres/raw.rs | |||
@@ -22,8 +22,11 @@ use ra_syntax::{ | |||
22 | use test_utils::tested_by; | 22 | use test_utils::tested_by; |
23 | 23 | ||
24 | use crate::{ | 24 | use crate::{ |
25 | attr::Attrs, db::DefDatabase, path::ModPath, visibility::RawVisibility, FileAstId, HirFileId, | 25 | attr::Attrs, |
26 | InFile, | 26 | db::DefDatabase, |
27 | path::{ImportAlias, ModPath}, | ||
28 | visibility::RawVisibility, | ||
29 | FileAstId, HirFileId, InFile, | ||
27 | }; | 30 | }; |
28 | 31 | ||
29 | /// `RawItems` is a set of top-level items in a file (except for impls). | 32 | /// `RawItems` is a set of top-level items in a file (except for impls). |
@@ -145,7 +148,7 @@ impl_arena_id!(Import); | |||
145 | #[derive(Debug, Clone, PartialEq, Eq)] | 148 | #[derive(Debug, Clone, PartialEq, Eq)] |
146 | pub struct ImportData { | 149 | pub struct ImportData { |
147 | pub(super) path: ModPath, | 150 | pub(super) path: ModPath, |
148 | pub(super) alias: ImportAlias, | 151 | pub(super) alias: Option<ImportAlias>, |
149 | pub(super) is_glob: bool, | 152 | pub(super) is_glob: bool, |
150 | pub(super) is_prelude: bool, | 153 | pub(super) is_prelude: bool, |
151 | pub(super) is_extern_crate: bool, | 154 | pub(super) is_extern_crate: bool, |
@@ -153,13 +156,6 @@ pub struct ImportData { | |||
153 | pub(super) visibility: RawVisibility, | 156 | pub(super) visibility: RawVisibility, |
154 | } | 157 | } |
155 | 158 | ||
156 | #[derive(Debug, Clone, PartialEq, Eq)] | ||
157 | pub enum ImportAlias { | ||
158 | NoAlias, | ||
159 | Unnamed, // use Foo as _; | ||
160 | Alias(Name), | ||
161 | } | ||
162 | |||
163 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 159 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
164 | pub(super) struct Def(RawId); | 160 | pub(super) struct Def(RawId); |
165 | impl_arena_id!(Def); | 161 | impl_arena_id!(Def); |
@@ -360,10 +356,10 @@ impl RawItemsCollector { | |||
360 | let path = ModPath::from_name_ref(&name_ref); | 356 | let path = ModPath::from_name_ref(&name_ref); |
361 | let visibility = | 357 | let visibility = |
362 | RawVisibility::from_ast_with_hygiene(extern_crate.visibility(), &self.hygiene); | 358 | RawVisibility::from_ast_with_hygiene(extern_crate.visibility(), &self.hygiene); |
363 | let alias = extern_crate.alias().map_or(ImportAlias::NoAlias, |a| { | 359 | let alias = extern_crate.alias().map(|a| { |
364 | a.name() | 360 | a.name() |
365 | .map(|it| it.as_name()) | 361 | .map(|it| it.as_name()) |
366 | .map_or(ImportAlias::Unnamed, |a| ImportAlias::Alias(a)) | 362 | .map_or(ImportAlias::Underscore, |a| ImportAlias::Alias(a)) |
367 | }); | 363 | }); |
368 | let attrs = self.parse_attrs(&extern_crate); | 364 | let attrs = self.parse_attrs(&extern_crate); |
369 | // FIXME: cfg_attr | 365 | // FIXME: cfg_attr |