Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-expand/src/db.rs')
-rw-r--r--crates/hir-expand/src/db.rs45
1 files changed, 4 insertions, 41 deletions
diff --git a/crates/hir-expand/src/db.rs b/crates/hir-expand/src/db.rs
index c8a8be4311..69c8ffe609 100644
--- a/crates/hir-expand/src/db.rs
+++ b/crates/hir-expand/src/db.rs
@@ -1,8 +1,8 @@
//! Defines database & queries for macro expansion.
use base_db::{Crate, SourceDatabase};
-use span::{AstIdMap, Span};
-use syntax::{AstNode, Parse, SyntaxNode, SyntaxToken, ast};
+use span::Span;
+use syntax::{AstNode, SyntaxNode, SyntaxToken, ast};
use syntax_bridge::{DocCommentDesugarMode, syntax_node_to_token_tree};
use crate::{
@@ -37,23 +37,17 @@ pub enum TokenExpander<'db> {
#[query_group::query_group]
pub trait ExpandDatabase: SourceDatabase {
- #[salsa::invoke(ast_id_map)]
- #[salsa::transparent]
- fn ast_id_map(&self, file_id: HirFileId) -> &AstIdMap;
-
#[salsa::transparent]
fn resolve_span(&self, span: Span) -> FileRange;
#[salsa::transparent]
- fn parse_or_expand(&self, file_id: HirFileId) -> SyntaxNode;
-
- #[salsa::transparent]
#[salsa::invoke(SpanMap::new)]
fn span_map(&self, file_id: HirFileId) -> SpanMap<'_>;
#[salsa::transparent]
#[salsa::invoke(crate::span_map::expansion_span_map)]
fn expansion_span_map(&self, file_id: MacroCallId) -> &ExpansionSpanMap;
+
#[salsa::invoke(crate::span_map::real_span_map)]
#[salsa::transparent]
fn real_span_map(&self, file_id: EditionedFileId) -> &RealSpanMap;
@@ -76,7 +70,7 @@ pub trait ExpandDatabase: SourceDatabase {
fn resolve_span(db: &dyn ExpandDatabase, Span { range, anchor, ctx: _ }: Span) -> FileRange {
let file_id = EditionedFileId::from_span_file_id(db, anchor.file_id);
let anchor_offset =
- db.ast_id_map(file_id.into()).get_erased(anchor.ast_id).text_range().start();
+ HirFileId::from(file_id).ast_id_map(db).get_erased(anchor.ast_id).text_range().start();
FileRange { file_id, range: range + anchor_offset }
}
@@ -255,37 +249,6 @@ pub fn expand_speculative(
Some((node.syntax_node(), token))
}
-#[salsa::tracked(lru = 1024, returns(ref))]
-fn ast_id_map(db: &dyn ExpandDatabase, file_id: HirFileId) -> AstIdMap {
- AstIdMap::from_source(&db.parse_or_expand(file_id))
-}
-
-/// Main public API -- parses a hir file, not caring whether it's a real
-/// file or a macro expansion.
-fn parse_or_expand(db: &dyn ExpandDatabase, file_id: HirFileId) -> SyntaxNode {
- match file_id {
- HirFileId::FileId(file_id) => file_id.parse(db).syntax_node(),
- HirFileId::MacroFile(macro_file) => {
- macro_file.parse_macro_expansion(db).value.0.syntax_node()
- }
- }
-}
-
-pub(crate) fn parse_with_map(
- db: &dyn ExpandDatabase,
- file_id: HirFileId,
-) -> (Parse<SyntaxNode>, SpanMap<'_>) {
- match file_id {
- HirFileId::FileId(file_id) => {
- (file_id.parse(db).to_syntax(), SpanMap::RealSpanMap(db.real_span_map(file_id)))
- }
- HirFileId::MacroFile(macro_file) => {
- let (parse, map) = &macro_file.parse_macro_expansion(db).value;
- (parse.clone(), SpanMap::ExpansionSpanMap(map))
- }
- }
-}
-
impl<'db> TokenExpander<'db> {
fn macro_expander(db: &'db dyn ExpandDatabase, id: MacroDefId) -> TokenExpander<'db> {
match id.kind {