From e823c578c9f6886fe9db9767cb81e75a6c56bf15 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 28 Nov 2019 16:00:03 +0300 Subject: Use InFile for AstId --- crates/ra_hir/src/code_model/src.rs | 2 +- crates/ra_hir_def/src/attr.rs | 2 +- crates/ra_hir_def/src/lib.rs | 10 +++--- crates/ra_hir_def/src/nameres.rs | 6 ++-- .../ra_hir_def/src/nameres/tests/mod_resolution.rs | 4 +-- crates/ra_hir_expand/src/lib.rs | 39 +++------------------- 6 files changed, 16 insertions(+), 47 deletions(-) diff --git a/crates/ra_hir/src/code_model/src.rs b/crates/ra_hir/src/code_model/src.rs index 6fd4e7987..9a755704f 100644 --- a/crates/ra_hir/src/code_model/src.rs +++ b/crates/ra_hir/src/code_model/src.rs @@ -105,7 +105,7 @@ impl HasSource for TypeAlias { impl HasSource for MacroDef { type Ast = ast::MacroCall; fn source(self, db: &impl DefDatabase) -> InFile { - InFile { file_id: self.id.ast_id.file_id(), value: self.id.ast_id.to_node(db) } + InFile { file_id: self.id.ast_id.file_id, value: self.id.ast_id.to_node(db) } } } impl HasSource for ImplBlock { diff --git a/crates/ra_hir_def/src/attr.rs b/crates/ra_hir_def/src/attr.rs index 83783ac7a..346019f88 100644 --- a/crates/ra_hir_def/src/attr.rs +++ b/crates/ra_hir_def/src/attr.rs @@ -157,7 +157,7 @@ where N: ast::AttrsOwner, D: DefDatabase, { - let src = InFile::new(src.file_id(), src.to_node(db)); + let src = InFile::new(src.file_id, src.to_node(db)); Attrs::from_attrs_owner(db, src.as_ref().map(|it| it as &dyn AttrsOwner)) } diff --git a/crates/ra_hir_def/src/lib.rs b/crates/ra_hir_def/src/lib.rs index 9d89692bf..6daf7d3a3 100644 --- a/crates/ra_hir_def/src/lib.rs +++ b/crates/ra_hir_def/src/lib.rs @@ -108,7 +108,7 @@ pub trait AstItemDef: salsa::InternKey + Clone { fn source(self, db: &(impl AstDatabase + InternDatabase)) -> InFile { let loc = self.lookup_intern(db); let value = loc.ast_id.to_node(db); - InFile { file_id: loc.ast_id.file_id(), value } + InFile { file_id: loc.ast_id.file_id, value } } fn module(self, db: &impl InternDatabase) -> ModuleId { let loc = self.lookup_intern(db); @@ -525,7 +525,7 @@ impl HasSource for FunctionLoc { fn source(&self, db: &impl db::DefDatabase) -> InFile { let node = self.ast_id.to_node(db); - InFile::new(self.ast_id.file_id(), node) + InFile::new(self.ast_id.file_id, node) } } @@ -534,7 +534,7 @@ impl HasSource for TypeAliasLoc { fn source(&self, db: &impl db::DefDatabase) -> InFile { let node = self.ast_id.to_node(db); - InFile::new(self.ast_id.file_id(), node) + InFile::new(self.ast_id.file_id, node) } } @@ -543,7 +543,7 @@ impl HasSource for ConstLoc { fn source(&self, db: &impl db::DefDatabase) -> InFile { let node = self.ast_id.to_node(db); - InFile::new(self.ast_id.file_id(), node) + InFile::new(self.ast_id.file_id, node) } } @@ -552,7 +552,7 @@ impl HasSource for StaticLoc { fn source(&self, db: &impl db::DefDatabase) -> InFile { let node = self.ast_id.to_node(db); - InFile::new(self.ast_id.file_id(), node) + InFile::new(self.ast_id.file_id, node) } } diff --git a/crates/ra_hir_def/src/nameres.rs b/crates/ra_hir_def/src/nameres.rs index 1b369ea11..df42ea84a 100644 --- a/crates/ra_hir_def/src/nameres.rs +++ b/crates/ra_hir_def/src/nameres.rs @@ -267,7 +267,7 @@ impl ModuleData { return InFile::new(file_id.into(), Either::A(sf)); } let decl = self.declaration.unwrap(); - InFile::new(decl.file_id(), Either::B(decl.to_node(db))) + InFile::new(decl.file_id, Either::B(decl.to_node(db))) } /// Returns a node which declares this module, either a `mod foo;` or a `mod foo {}`. @@ -275,7 +275,7 @@ impl ModuleData { pub fn declaration_source(&self, db: &impl DefDatabase) -> Option> { let decl = self.declaration?; let value = decl.to_node(db); - Some(InFile { file_id: decl.file_id(), value }) + Some(InFile { file_id: decl.file_id, value }) } } @@ -309,7 +309,7 @@ mod diagnostics { } let decl = declaration.to_node(db); sink.push(UnresolvedModule { - file: declaration.file_id(), + file: declaration.file_id, decl: AstPtr::new(&decl), candidate: candidate.clone(), }) diff --git a/crates/ra_hir_def/src/nameres/tests/mod_resolution.rs b/crates/ra_hir_def/src/nameres/tests/mod_resolution.rs index e11530062..e800cc68e 100644 --- a/crates/ra_hir_def/src/nameres/tests/mod_resolution.rs +++ b/crates/ra_hir_def/src/nameres/tests/mod_resolution.rs @@ -668,7 +668,7 @@ fn unresolved_module_diagnostics() { module: LocalModuleId( 0, ), - declaration: AstId { + declaration: InFile { file_id: HirFileId( FileId( FileId( @@ -676,7 +676,7 @@ fn unresolved_module_diagnostics() { ), ), ), - file_ast_id: FileAstId { + value: FileAstId { raw: ErasedFileAstId( 1, ), diff --git a/crates/ra_hir_expand/src/lib.rs b/crates/ra_hir_expand/src/lib.rs index 2c5b6b2bb..fb88d2ac2 100644 --- a/crates/ra_hir_expand/src/lib.rs +++ b/crates/ra_hir_expand/src/lib.rs @@ -13,7 +13,7 @@ pub mod diagnostics; pub mod builtin_macro; pub mod quote; -use std::hash::{Hash, Hasher}; +use std::hash::Hash; use std::sync::Arc; use ra_db::{salsa, CrateId, FileId}; @@ -70,7 +70,7 @@ impl HirFileId { HirFileIdRepr::FileId(file_id) => file_id, HirFileIdRepr::MacroFile(macro_file) => { let loc = db.lookup_intern_macro(macro_file.macro_call_id); - loc.ast_id.file_id().original_file(db) + loc.ast_id.file_id.original_file(db) } } } @@ -214,43 +214,12 @@ impl ExpansionInfo { /// /// It is stable across reparses, and can be used as salsa key/value. // FIXME: isn't this just a `Source>` ? -#[derive(Debug)] -pub struct AstId { - file_id: HirFileId, - file_ast_id: FileAstId, -} - -impl Clone for AstId { - fn clone(&self) -> AstId { - *self - } -} -impl Copy for AstId {} - -impl PartialEq for AstId { - fn eq(&self, other: &Self) -> bool { - (self.file_id, self.file_ast_id) == (other.file_id, other.file_ast_id) - } -} -impl Eq for AstId {} -impl Hash for AstId { - fn hash(&self, hasher: &mut H) { - (self.file_id, self.file_ast_id).hash(hasher); - } -} +pub type AstId = InFile>; impl AstId { - pub fn new(file_id: HirFileId, file_ast_id: FileAstId) -> AstId { - AstId { file_id, file_ast_id } - } - - pub fn file_id(&self) -> HirFileId { - self.file_id - } - pub fn to_node(&self, db: &dyn db::AstDatabase) -> N { let root = db.parse_or_expand(self.file_id).unwrap(); - db.ast_id_map(self.file_id).get(self.file_ast_id).to_node(&root) + db.ast_id_map(self.file_id).get(self.value).to_node(&root) } } -- cgit v1.2.3