Remove ItemTree::source

`HasSource` should be used instead
This commit is contained in:
Jonas Schievink 2021-03-12 23:54:29 +01:00
parent 437527b226
commit 8447f101ac
2 changed files with 4 additions and 18 deletions

View file

@ -209,18 +209,6 @@ impl ItemTree {
} }
} }
pub fn source<S: ItemTreeNode>(&self, db: &dyn DefDatabase, of: ItemTreeId<S>) -> S::Source {
// This unwrap cannot fail, since it has either succeeded above, or resulted in an empty
// ItemTree (in which case there is no valid `FileItemTreeId` to call this method with).
let root =
db.parse_or_expand(of.file_id).expect("parse_or_expand failed on constructed ItemTree");
let id = self[of.value].ast_id();
let map = db.ast_id_map(of.file_id);
let ptr = map.get(id);
ptr.to_node(&root)
}
fn data(&self) -> &ItemTreeData { fn data(&self) -> &ItemTreeData {
self.data.as_ref().expect("attempted to access data of empty ItemTree") self.data.as_ref().expect("attempted to access data of empty ItemTree")
} }

View file

@ -19,6 +19,7 @@ use hir_def::{
item_scope::ItemScope, item_scope::ItemScope,
keys, keys,
nameres::DefMap, nameres::DefMap,
src::HasSource,
AssocItemId, DefWithBodyId, LocalModuleId, Lookup, ModuleDefId, AssocItemId, DefWithBodyId, LocalModuleId, Lookup, ModuleDefId,
}; };
use hir_expand::{db::AstDatabase, InFile}; use hir_expand::{db::AstDatabase, InFile};
@ -195,18 +196,15 @@ fn infer_with_mismatches(content: &str, include_mismatches: bool) -> String {
defs.sort_by_key(|def| match def { defs.sort_by_key(|def| match def {
DefWithBodyId::FunctionId(it) => { DefWithBodyId::FunctionId(it) => {
let loc = it.lookup(&db); let loc = it.lookup(&db);
let tree = db.item_tree(loc.id.file_id); loc.source(&db).value.syntax().text_range().start()
tree.source(&db, loc.id).syntax().text_range().start()
} }
DefWithBodyId::ConstId(it) => { DefWithBodyId::ConstId(it) => {
let loc = it.lookup(&db); let loc = it.lookup(&db);
let tree = db.item_tree(loc.id.file_id); loc.source(&db).value.syntax().text_range().start()
tree.source(&db, loc.id).syntax().text_range().start()
} }
DefWithBodyId::StaticId(it) => { DefWithBodyId::StaticId(it) => {
let loc = it.lookup(&db); let loc = it.lookup(&db);
let tree = db.item_tree(loc.id.file_id); loc.source(&db).value.syntax().text_range().start()
tree.source(&db, loc.id).syntax().text_range().start()
} }
}); });
for def in defs { for def in defs {