Hide MacroCallLoc
This commit is contained in:
parent
4d753fa6f5
commit
447268ceac
4 changed files with 19 additions and 13 deletions
|
@ -14,8 +14,7 @@ use hir_def::{
|
||||||
DefWithBodyId,
|
DefWithBodyId,
|
||||||
};
|
};
|
||||||
use hir_expand::{
|
use hir_expand::{
|
||||||
hygiene::Hygiene, name::AsName, AstId, HirFileId, MacroCallId, MacroCallLoc, MacroFileKind,
|
hygiene::Hygiene, name::AsName, AstId, HirFileId, MacroCallId, MacroFileKind, Source,
|
||||||
Source,
|
|
||||||
};
|
};
|
||||||
use ra_syntax::{
|
use ra_syntax::{
|
||||||
ast::{self, AstNode},
|
ast::{self, AstNode},
|
||||||
|
@ -451,9 +450,8 @@ impl SourceAnalyzer {
|
||||||
macro_call.file_id,
|
macro_call.file_id,
|
||||||
db.ast_id_map(macro_call.file_id).ast_id(macro_call.value),
|
db.ast_id_map(macro_call.file_id).ast_id(macro_call.value),
|
||||||
);
|
);
|
||||||
let macro_call_loc = MacroCallLoc { def, ast_id };
|
|
||||||
Some(Expansion {
|
Some(Expansion {
|
||||||
macro_call_id: db.intern_macro(macro_call_loc),
|
macro_call_id: def.as_call_id(db, ast_id),
|
||||||
macro_file_kind: to_macro_file_kind(macro_call.value),
|
macro_file_kind: to_macro_file_kind(macro_call.value),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,7 @@ pub mod scope;
|
||||||
use std::{ops::Index, sync::Arc};
|
use std::{ops::Index, sync::Arc};
|
||||||
|
|
||||||
use hir_expand::{
|
use hir_expand::{
|
||||||
either::Either, hygiene::Hygiene, AstId, HirFileId, MacroCallLoc, MacroDefId, MacroFileKind,
|
either::Either, hygiene::Hygiene, AstId, HirFileId, MacroDefId, MacroFileKind, Source,
|
||||||
Source,
|
|
||||||
};
|
};
|
||||||
use ra_arena::{map::ArenaMap, Arena};
|
use ra_arena::{map::ArenaMap, Arena};
|
||||||
use ra_syntax::{ast, AstNode, AstPtr};
|
use ra_syntax::{ast, AstNode, AstPtr};
|
||||||
|
@ -47,7 +46,7 @@ impl Expander {
|
||||||
|
|
||||||
if let Some(path) = macro_call.path().and_then(|path| self.parse_path(path)) {
|
if let Some(path) = macro_call.path().and_then(|path| self.parse_path(path)) {
|
||||||
if let Some(def) = self.resolve_path_as_macro(db, &path) {
|
if let Some(def) = self.resolve_path_as_macro(db, &path) {
|
||||||
let call_id = db.intern_macro(MacroCallLoc { def, ast_id });
|
let call_id = def.as_call_id(db, ast_id);
|
||||||
let file_id = call_id.as_file(MacroFileKind::Expr);
|
let file_id = call_id.as_file(MacroFileKind::Expr);
|
||||||
if let Some(node) = db.parse_or_expand(file_id) {
|
if let Some(node) = db.parse_or_expand(file_id) {
|
||||||
if let Some(expr) = ast::Expr::cast(node) {
|
if let Some(expr) = ast::Expr::cast(node) {
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
use hir_expand::{
|
use hir_expand::{
|
||||||
builtin_macro::find_builtin_macro,
|
builtin_macro::find_builtin_macro,
|
||||||
name::{self, AsName, Name},
|
name::{self, AsName, Name},
|
||||||
HirFileId, MacroCallId, MacroCallLoc, MacroDefId, MacroDefKind, MacroFileKind,
|
HirFileId, MacroCallId, MacroDefId, MacroDefKind, MacroFileKind,
|
||||||
};
|
};
|
||||||
use ra_cfg::CfgOptions;
|
use ra_cfg::CfgOptions;
|
||||||
use ra_db::{CrateId, FileId};
|
use ra_db::{CrateId, FileId};
|
||||||
|
@ -480,7 +480,7 @@ where
|
||||||
);
|
);
|
||||||
|
|
||||||
if let Some(def) = resolved_res.resolved_def.take_macros() {
|
if let Some(def) = resolved_res.resolved_def.take_macros() {
|
||||||
let call_id = self.db.intern_macro(MacroCallLoc { def, ast_id: *ast_id });
|
let call_id = def.as_call_id(self.db, *ast_id);
|
||||||
resolved.push((*module_id, call_id, def));
|
resolved.push((*module_id, call_id, def));
|
||||||
res = ReachedFixedPoint::No;
|
res = ReachedFixedPoint::No;
|
||||||
return false;
|
return false;
|
||||||
|
@ -773,8 +773,7 @@ where
|
||||||
if let Some(macro_def) = mac.path.as_ident().and_then(|name| {
|
if let Some(macro_def) = mac.path.as_ident().and_then(|name| {
|
||||||
self.def_collector.def_map[self.module_id].scope.get_legacy_macro(&name)
|
self.def_collector.def_map[self.module_id].scope.get_legacy_macro(&name)
|
||||||
}) {
|
}) {
|
||||||
let macro_call_id =
|
let macro_call_id = macro_def.as_call_id(self.def_collector.db, ast_id);
|
||||||
self.def_collector.db.intern_macro(MacroCallLoc { def: macro_def, ast_id });
|
|
||||||
|
|
||||||
self.def_collector.collect_macro_expansion(self.module_id, macro_call_id, macro_def);
|
self.def_collector.collect_macro_expansion(self.module_id, macro_call_id, macro_def);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -135,6 +135,16 @@ pub struct MacroDefId {
|
||||||
pub kind: MacroDefKind,
|
pub kind: MacroDefKind,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl MacroDefId {
|
||||||
|
pub fn as_call_id(
|
||||||
|
self,
|
||||||
|
db: &dyn db::AstDatabase,
|
||||||
|
ast_id: AstId<ast::MacroCall>,
|
||||||
|
) -> MacroCallId {
|
||||||
|
db.intern_macro(MacroCallLoc { def: self, ast_id })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||||
pub enum MacroDefKind {
|
pub enum MacroDefKind {
|
||||||
Declarative,
|
Declarative,
|
||||||
|
@ -143,8 +153,8 @@ pub enum MacroDefKind {
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||||
pub struct MacroCallLoc {
|
pub struct MacroCallLoc {
|
||||||
pub def: MacroDefId,
|
pub(crate) def: MacroDefId,
|
||||||
pub ast_id: AstId<ast::MacroCall>,
|
pub(crate) ast_id: AstId<ast::MacroCall>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl MacroCallId {
|
impl MacroCallId {
|
||||||
|
|
Loading…
Add table
Reference in a new issue