Add basic bultin macro infrastructure
This commit is contained in:
26
crates/ra_hir_expand/src/builtin_macro.rs
Normal file
26
crates/ra_hir_expand/src/builtin_macro.rs
Normal file
@@ -0,0 +1,26 @@
|
||||
//! Builtin macro
|
||||
use crate::{ast, name, AstId, BuiltinMacro, CrateId, MacroDefId};
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub enum BuiltinExpander {
|
||||
Line
|
||||
}
|
||||
|
||||
impl BuiltinExpander {
|
||||
pub fn expand(&self, _tt: &tt::Subtree) -> Result<tt::Subtree, mbe::ExpandError> {
|
||||
Err(mbe::ExpandError::UnexpectedToken)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn find_builtin_macro(
|
||||
ident: &name::Name,
|
||||
krate: CrateId,
|
||||
ast_id: AstId<ast::MacroCall>,
|
||||
) -> Option<MacroDefId> {
|
||||
// FIXME: Better registering method
|
||||
if ident == &name::LINE {
|
||||
Some(MacroDefId::BuiltinMacro(BuiltinMacro { expander: BuiltinExpander::Line, krate, ast_id }))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user