mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 12:29:21 +00:00
Merge hir::MacroDef::is_* into hir::MacroDef::kind
This commit is contained in:
parent
bad4e48672
commit
7c4eb66c1a
3 changed files with 20 additions and 16 deletions
|
@ -1116,6 +1116,14 @@ impl BuiltinType {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub enum MacroKind {
|
||||
Declarative,
|
||||
ProcMacro,
|
||||
Derive,
|
||||
BuiltIn,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct MacroDef {
|
||||
pub(crate) id: MacroDefId,
|
||||
|
@ -1140,20 +1148,15 @@ impl MacroDef {
|
|||
}
|
||||
}
|
||||
|
||||
/// Indicate it is a proc-macro
|
||||
pub fn is_proc_macro(&self) -> bool {
|
||||
matches!(self.id.kind, MacroDefKind::ProcMacro(..))
|
||||
}
|
||||
|
||||
/// Indicate it is a derive macro
|
||||
pub fn is_derive_macro(&self) -> bool {
|
||||
// FIXME: wrong for `ProcMacro`
|
||||
matches!(self.id.kind, MacroDefKind::ProcMacro(..) | MacroDefKind::BuiltInDerive(..))
|
||||
}
|
||||
|
||||
/// Indicate it is a declarative macro
|
||||
pub fn is_declarative(&self) -> bool {
|
||||
matches!(self.id.kind, MacroDefKind::Declarative(..))
|
||||
pub fn kind(&self) -> MacroKind {
|
||||
match self.id.kind {
|
||||
MacroDefKind::Declarative(_) => MacroKind::Declarative,
|
||||
MacroDefKind::BuiltIn(_, _) => MacroKind::BuiltIn,
|
||||
MacroDefKind::BuiltInDerive(_, _) => MacroKind::Derive,
|
||||
MacroDefKind::BuiltInEager(_, _) => MacroKind::BuiltIn,
|
||||
// FIXME might be a derive
|
||||
MacroDefKind::ProcMacro(_, _) => MacroKind::ProcMacro,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue