diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2019-10-11 07:01:58 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2019-10-11 07:01:58 +0100 |
commit | ef6ccd75e0961956cb8bd07c59382f85da1dadd3 (patch) | |
tree | c51b9acd97d0f3a336a8473b743e468cd570224c | |
parent | 3b4c506f338d03a633419459bb32daf331153d5e (diff) | |
parent | 0d0a444d4380d9d1eb580d862b2376b9693d77f3 (diff) |
Merge #1991
1991: Use `original_file` instead of `as_original_file` r=matklad a=sinkuu
I saw ra_lsp_server panics originating from `as_original_file`, though I have not been able to reproduce.
Co-authored-by: Shotaro Yamada <[email protected]>
-rw-r--r-- | crates/ra_hir/src/ids.rs | 10 | ||||
-rw-r--r-- | crates/ra_ide_api/src/display/navigation_target.rs | 6 | ||||
-rw-r--r-- | crates/ra_ide_api/src/references.rs | 2 |
3 files changed, 4 insertions, 14 deletions
diff --git a/crates/ra_hir/src/ids.rs b/crates/ra_hir/src/ids.rs index a3b65cc79..85b022744 100644 --- a/crates/ra_hir/src/ids.rs +++ b/crates/ra_hir/src/ids.rs | |||
@@ -50,16 +50,6 @@ impl HirFileId { | |||
50 | } | 50 | } |
51 | } | 51 | } |
52 | 52 | ||
53 | /// XXX: this is a temporary function, which should go away when we implement the | ||
54 | /// nameresolution+macro expansion combo. Prefer using `original_file` if | ||
55 | /// possible. | ||
56 | pub fn as_original_file(self) -> FileId { | ||
57 | match self.0 { | ||
58 | HirFileIdRepr::File(file_id) => file_id, | ||
59 | HirFileIdRepr::Macro(_r) => panic!("macro generated file: {:?}", self), | ||
60 | } | ||
61 | } | ||
62 | |||
63 | /// Get the crate which the macro lives in, if it is a macro file. | 53 | /// Get the crate which the macro lives in, if it is a macro file. |
64 | pub(crate) fn macro_crate(self, db: &impl AstDatabase) -> Option<Crate> { | 54 | pub(crate) fn macro_crate(self, db: &impl AstDatabase) -> Option<Crate> { |
65 | match self.0 { | 55 | match self.0 { |
diff --git a/crates/ra_ide_api/src/display/navigation_target.rs b/crates/ra_ide_api/src/display/navigation_target.rs index d0b1a8a2a..5cb67fb95 100644 --- a/crates/ra_ide_api/src/display/navigation_target.rs +++ b/crates/ra_ide_api/src/display/navigation_target.rs | |||
@@ -119,7 +119,7 @@ impl NavigationTarget { | |||
119 | 119 | ||
120 | pub(crate) fn from_module(db: &RootDatabase, module: hir::Module) -> NavigationTarget { | 120 | pub(crate) fn from_module(db: &RootDatabase, module: hir::Module) -> NavigationTarget { |
121 | let src = module.definition_source(db); | 121 | let src = module.definition_source(db); |
122 | let file_id = src.file_id.as_original_file(); | 122 | let file_id = src.file_id.original_file(db); |
123 | let name = module.name(db).map(|it| it.to_string().into()).unwrap_or_default(); | 123 | let name = module.name(db).map(|it| it.to_string().into()).unwrap_or_default(); |
124 | match src.ast { | 124 | match src.ast { |
125 | ModuleSource::SourceFile(node) => { | 125 | ModuleSource::SourceFile(node) => { |
@@ -139,7 +139,7 @@ impl NavigationTarget { | |||
139 | pub(crate) fn from_module_to_decl(db: &RootDatabase, module: hir::Module) -> NavigationTarget { | 139 | pub(crate) fn from_module_to_decl(db: &RootDatabase, module: hir::Module) -> NavigationTarget { |
140 | let name = module.name(db).map(|it| it.to_string().into()).unwrap_or_default(); | 140 | let name = module.name(db).map(|it| it.to_string().into()).unwrap_or_default(); |
141 | if let Some(src) = module.declaration_source(db) { | 141 | if let Some(src) = module.declaration_source(db) { |
142 | let file_id = src.file_id.as_original_file(); | 142 | let file_id = src.file_id.original_file(db); |
143 | return NavigationTarget::from_syntax( | 143 | return NavigationTarget::from_syntax( |
144 | file_id, | 144 | file_id, |
145 | name, | 145 | name, |
@@ -213,7 +213,7 @@ impl NavigationTarget { | |||
213 | ) -> NavigationTarget { | 213 | ) -> NavigationTarget { |
214 | let src = impl_block.source(db); | 214 | let src = impl_block.source(db); |
215 | NavigationTarget::from_syntax( | 215 | NavigationTarget::from_syntax( |
216 | src.file_id.as_original_file(), | 216 | src.file_id.original_file(db), |
217 | "impl".into(), | 217 | "impl".into(), |
218 | None, | 218 | None, |
219 | src.ast.syntax(), | 219 | src.ast.syntax(), |
diff --git a/crates/ra_ide_api/src/references.rs b/crates/ra_ide_api/src/references.rs index 84c2eb793..c95c47bf1 100644 --- a/crates/ra_ide_api/src/references.rs +++ b/crates/ra_ide_api/src/references.rs | |||
@@ -140,7 +140,7 @@ fn rename_mod( | |||
140 | let module_src = hir::Source { file_id: position.file_id.into(), ast: ast_module.clone() }; | 140 | let module_src = hir::Source { file_id: position.file_id.into(), ast: ast_module.clone() }; |
141 | if let Some(module) = hir::Module::from_declaration(db, module_src) { | 141 | if let Some(module) = hir::Module::from_declaration(db, module_src) { |
142 | let src = module.definition_source(db); | 142 | let src = module.definition_source(db); |
143 | let file_id = src.file_id.as_original_file(); | 143 | let file_id = src.file_id.original_file(db); |
144 | match src.ast { | 144 | match src.ast { |
145 | ModuleSource::SourceFile(..) => { | 145 | ModuleSource::SourceFile(..) => { |
146 | let mod_path: RelativePathBuf = db.file_relative_path(file_id); | 146 | let mod_path: RelativePathBuf = db.file_relative_path(file_id); |