Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/has_source.rs')
-rw-r--r--crates/hir/src/has_source.rs24
1 files changed, 12 insertions, 12 deletions
diff --git a/crates/hir/src/has_source.rs b/crates/hir/src/has_source.rs
index e032a16989..f9badc0b79 100644
--- a/crates/hir/src/has_source.rs
+++ b/crates/hir/src/has_source.rs
@@ -3,6 +3,7 @@
use either::Either;
use hir_def::{
CallableDefId, Lookup, MacroId, VariantId,
+ expr_store::ExpressionStore,
nameres::{ModuleOrigin, ModuleSource},
src::{HasChildSource, HasSource as _},
};
@@ -12,9 +13,9 @@ use syntax::{AstNode, ast};
use tt::TextRange;
use crate::{
- Adt, AnyFunctionId, Callee, Const, Enum, ExternCrateDecl, Field, FieldSource, Function, Impl,
- InlineAsmOperand, Label, LifetimeParam, LocalSource, Macro, Module, Param, SelfParam, Static,
- Struct, Trait, TypeAlias, TypeOrConstParam, Union, Variant, VariantDef, db::HirDatabase,
+ Adt, AnyFunctionId, Callee, Const, Enum, EnumVariant, ExternCrateDecl, Field, FieldSource,
+ Function, Impl, InlineAsmOperand, Label, LifetimeParam, LocalSource, Macro, Module, Param,
+ SelfParam, Static, Struct, Trait, TypeAlias, TypeOrConstParam, Union, Variant, db::HirDatabase,
};
pub trait HasSource: Sized {
@@ -123,13 +124,13 @@ impl HasSource for Adt {
}
}
}
-impl HasSource for VariantDef {
+impl HasSource for Variant {
type Ast = ast::VariantDef;
fn source(self, db: &dyn HirDatabase) -> Option<InFile<Self::Ast>> {
match self {
- VariantDef::Struct(s) => Some(s.source(db)?.map(ast::VariantDef::Struct)),
- VariantDef::Union(u) => Some(u.source(db)?.map(ast::VariantDef::Union)),
- VariantDef::Variant(v) => Some(v.source(db)?.map(ast::VariantDef::Variant)),
+ Variant::Struct(s) => Some(s.source(db)?.map(ast::VariantDef::Struct)),
+ Variant::Union(u) => Some(u.source(db)?.map(ast::VariantDef::Union)),
+ Variant::EnumVariant(v) => Some(v.source(db)?.map(ast::VariantDef::Variant)),
}
}
}
@@ -151,7 +152,7 @@ impl HasSource for Enum {
Some(self.id.lookup(db).source(db))
}
}
-impl HasSource for Variant {
+impl HasSource for EnumVariant {
type Ast = ast::Variant;
fn source(self, db: &dyn HirDatabase) -> Option<InFile<ast::Variant>> {
Some(self.id.lookup(db).source(db))
@@ -293,7 +294,7 @@ impl HasSource for Param<'_> {
}
Callee::Closure(closure, _) => {
let InternedClosure(owner, expr_id) = db.lookup_intern_closure(closure);
- let (_, source_map) = db.body_with_source_map(owner);
+ let (_, source_map) = ExpressionStore::with_source_map(db, owner);
let ast @ InFile { file_id, value } = source_map.expr_syntax(expr_id).ok()?;
let root = db.parse_or_expand(file_id);
match value.to_node(&root) {
@@ -327,8 +328,7 @@ impl HasSource for Label {
type Ast = ast::Label;
fn source(self, db: &dyn HirDatabase) -> Option<InFile<Self::Ast>> {
- let (_body, source_map) = db.body_with_source_map(self.parent);
- let src = source_map.label_syntax(self.label_id);
+ let src = ExpressionStore::with_source_map(db, self.parent).1.label_syntax(self.label_id);
let root = src.file_syntax(db);
src.map(|ast| ast.to_node(&root).left()).transpose()
}
@@ -345,7 +345,7 @@ impl HasSource for ExternCrateDecl {
impl HasSource for InlineAsmOperand {
type Ast = ast::AsmOperandNamed;
fn source(self, db: &dyn HirDatabase) -> Option<InFile<Self::Ast>> {
- let source_map = db.body_with_source_map(self.owner).1;
+ let (_, source_map) = ExpressionStore::with_source_map(db, self.owner);
if let Ok(src) = source_map.expr_syntax(self.expr) {
let root = src.file_syntax(db);
return src