remove not that useful indirection

This commit is contained in:
Aleksey Kladov 2019-10-29 16:01:14 +03:00
parent b8b7969bfb
commit 7de6eaa58a
4 changed files with 8 additions and 18 deletions

View file

@ -465,7 +465,7 @@ where
if let Some(path) = e.path().and_then(|path| self.parse_path(path)) {
if let Some(def) = self.resolver.resolve_path_as_macro(self.db, &path) {
let call_id = MacroCallLoc { def: def.id, ast_id }.id(self.db);
let call_id = self.db.intern_macro(MacroCallLoc { def: def.id, ast_id });
let file_id = call_id.as_file(MacroFileKind::Expr);
if let Some(node) = self.db.parse_or_expand(file_id) {
if let Some(expr) = ast::Expr::cast(node) {

View file

@ -263,7 +263,7 @@ impl ModuleImplBlocks {
{
if let Some(def) = self.module.resolver(db).resolve_path_as_macro(db, &path)
{
let call_id = MacroCallLoc { def: def.id, ast_id }.id(db);
let call_id = db.intern_macro(MacroCallLoc { def: def.id, ast_id });
let file_id = call_id.as_file(MacroFileKind::Items);
if let Some(item_list) =
db.parse_or_expand(file_id).and_then(ast::MacroItems::cast)

View file

@ -448,7 +448,7 @@ where
);
if let Some(def) = resolved_res.resolved_def.get_macros() {
let call_id = MacroCallLoc { def: def.id, ast_id: *ast_id }.id(self.db);
let call_id = self.db.intern_macro(MacroCallLoc { def: def.id, ast_id: *ast_id });
resolved.push((*module_id, call_id, def.id));
res = ReachedFixedPoint::No;
return false;
@ -690,7 +690,7 @@ where
self.def_collector.def_map[self.module_id].scope.get_legacy_macro(&name)
}) {
let def = macro_def.id;
let macro_call_id = MacroCallLoc { def, ast_id }.id(self.def_collector.db);
let macro_call_id = self.def_collector.db.intern_macro(MacroCallLoc { def, ast_id });
self.def_collector.collect_macro_expansion(self.module_id, macro_call_id, def);
return;

View file

@ -1,8 +1,8 @@
//! `ra_hir_def` contains initial "phases" of the compiler. Roughly, everything
//! before types.
//! `ra_hir_expand` deals with macro expansion.
//!
//! Note that we are in the process of moving parts of `ra_hir` into
//! `ra_hir_def`, so this crates doesn't contain a lot at the moment.
//! Specifically, it implements a concept of `MacroFile` -- a file whose syntax
//! tree originates not from the text of some `FileId`, but from some macro
//! expansion.
pub mod db;
pub mod ast_id_map;
@ -116,22 +116,12 @@ pub struct MacroCallLoc {
}
impl MacroCallId {
pub fn loc(self, db: &impl AstDatabase) -> MacroCallLoc {
db.lookup_intern_macro(self)
}
pub fn as_file(self, kind: MacroFileKind) -> HirFileId {
let macro_file = MacroFile { macro_call_id: self, macro_file_kind: kind };
macro_file.into()
}
}
impl MacroCallLoc {
pub fn id(self, db: &impl AstDatabase) -> MacroCallId {
db.intern_macro(self)
}
}
/// `AstId` points to an AST node in any file.
///
/// It is stable across reparses, and can be used as salsa key/value.