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.rs71
1 files changed, 0 insertions, 71 deletions
diff --git a/crates/hir-expand/src/db.rs b/crates/hir-expand/src/db.rs
deleted file mode 100644
index 5c9520d397..0000000000
--- a/crates/hir-expand/src/db.rs
+++ /dev/null
@@ -1,71 +0,0 @@
-//! Defines database & queries for macro expansion.
-
-use base_db::{Crate, SourceDatabase};
-use span::Span;
-use syntax::ast;
-
-use crate::{
- AstId, BuiltinAttrExpander, BuiltinDeriveExpander, BuiltinFnLikeExpander, EagerExpander,
- EditionedFileId, FileRange, HirFileId, MacroDefId, MacroDefKind,
- declarative::DeclarativeMacroExpander, proc_macro::CustomProcMacroExpander,
-};
-
-#[derive(Debug, Clone, Copy, Eq, PartialEq)]
-pub enum TokenExpander<'db> {
- /// Old-style `macro_rules` or the new macros 2.0
- DeclarativeMacro(&'db DeclarativeMacroExpander),
- /// Stuff like `line!` and `file!`.
- BuiltIn(BuiltinFnLikeExpander),
- /// Built-in eagerly expanded fn-like macros (`include!`, `concat!`, etc.)
- BuiltInEager(EagerExpander),
- /// `global_allocator` and such.
- BuiltInAttr(BuiltinAttrExpander),
- /// `derive(Copy)` and such.
- BuiltInDerive(BuiltinDeriveExpander),
- UnimplementedBuiltIn,
- /// The thing we love the most here in rust-analyzer -- procedural macros.
- ProcMacro(CustomProcMacroExpander),
-}
-
-#[query_group::query_group]
-pub trait ExpandDatabase: SourceDatabase {
- #[salsa::transparent]
- fn resolve_span(&self, span: Span) -> FileRange;
-
- /// Fetches the expander for this macro.
- #[salsa::transparent]
- #[salsa::invoke(TokenExpander::macro_expander)]
- fn macro_expander(&self, id: MacroDefId) -> TokenExpander<'_>;
-
- /// Fetches (and compiles) the expander of this decl macro.
- #[salsa::invoke(DeclarativeMacroExpander::expander)]
- #[salsa::transparent]
- fn decl_macro_expander(
- &self,
- def_crate: Crate,
- id: AstId<ast::Macro>,
- ) -> &DeclarativeMacroExpander;
-}
-
-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 =
- HirFileId::from(file_id).ast_id_map(db).get_erased(anchor.ast_id).text_range().start();
- FileRange { file_id, range: range + anchor_offset }
-}
-
-impl<'db> TokenExpander<'db> {
- fn macro_expander(db: &'db dyn ExpandDatabase, id: MacroDefId) -> TokenExpander<'db> {
- match id.kind {
- MacroDefKind::Declarative(ast_id, _) => {
- TokenExpander::DeclarativeMacro(db.decl_macro_expander(id.krate, ast_id))
- }
- MacroDefKind::BuiltIn(_, expander) => TokenExpander::BuiltIn(expander),
- MacroDefKind::BuiltInAttr(_, expander) => TokenExpander::BuiltInAttr(expander),
- MacroDefKind::BuiltInDerive(_, expander) => TokenExpander::BuiltInDerive(expander),
- MacroDefKind::BuiltInEager(_, expander) => TokenExpander::BuiltInEager(expander),
- MacroDefKind::ProcMacro(_, expander, _) => TokenExpander::ProcMacro(expander),
- MacroDefKind::UnimplementedBuiltIn(_) => TokenExpander::UnimplementedBuiltIn,
- }
- }
-}