Revert "Strip delimiter from fn-like proc macro input"
This reverts commit bda68e23328ca62a71da348a13c4d13cc8f991f3.
This commit is contained in:
parent
c6e2ba43bb
commit
c868414dcd
@ -1,9 +1,8 @@
|
|||||||
//! Macro input conditioning.
|
//! Macro input conditioning.
|
||||||
|
|
||||||
use parser::SyntaxKind;
|
|
||||||
use syntax::{
|
use syntax::{
|
||||||
ast::{self, AttrsOwner},
|
ast::{self, AttrsOwner},
|
||||||
AstNode, SyntaxElement, SyntaxNode,
|
AstNode, SyntaxNode,
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
@ -20,33 +19,7 @@ pub(crate) fn process_macro_input(
|
|||||||
let loc: MacroCallLoc = db.lookup_intern_macro(id);
|
let loc: MacroCallLoc = db.lookup_intern_macro(id);
|
||||||
|
|
||||||
match loc.kind {
|
match loc.kind {
|
||||||
MacroCallKind::FnLike { .. } => {
|
MacroCallKind::FnLike { .. } => node,
|
||||||
if !loc.def.is_proc_macro() {
|
|
||||||
// MBE macros expect the parentheses as part of their input.
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The input includes the `(` + `)` delimiter tokens, so remove them before passing this
|
|
||||||
// to the macro.
|
|
||||||
let node = node.clone_for_update();
|
|
||||||
if let Some(SyntaxElement::Token(tkn)) = node.first_child_or_token() {
|
|
||||||
if matches!(
|
|
||||||
tkn.kind(),
|
|
||||||
SyntaxKind::L_BRACK | SyntaxKind::L_PAREN | SyntaxKind::L_CURLY
|
|
||||||
) {
|
|
||||||
tkn.detach();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if let Some(SyntaxElement::Token(tkn)) = node.last_child_or_token() {
|
|
||||||
if matches!(
|
|
||||||
tkn.kind(),
|
|
||||||
SyntaxKind::R_BRACK | SyntaxKind::R_PAREN | SyntaxKind::R_CURLY
|
|
||||||
) {
|
|
||||||
tkn.detach();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
node
|
|
||||||
}
|
|
||||||
MacroCallKind::Derive { derive_attr_index, .. } => {
|
MacroCallKind::Derive { derive_attr_index, .. } => {
|
||||||
let item = match ast::Item::cast(node.clone()) {
|
let item = match ast::Item::cast(node.clone()) {
|
||||||
Some(item) => item,
|
Some(item) => item,
|
||||||
|
@ -272,10 +272,6 @@ impl MacroDefId {
|
|||||||
};
|
};
|
||||||
Either::Left(*id)
|
Either::Left(*id)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_proc_macro(&self) -> bool {
|
|
||||||
matches!(self.kind, MacroDefKind::ProcMacro(..))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user