+ None if ast::Attr::can_cast(node.kind()) => inside_attribute = true,
+ _ => (),
+ },
+ WalkEvent::Leave(NodeOrToken::Node(node)) => match ast::Item::cast(node.clone()) {
+ Some(ast::Item::MacroCall(mcall)) => {
+ assert_eq!(current_macro_call, Some(mcall));
+ current_macro_call = None;
+ }
+ Some(ast::Item::MacroRules(mac)) => {
+ assert_eq!(current_macro, Some(mac.into()));
+ current_macro = None;
+ macro_highlighter = MacroHighlighter::default();
+ }
+ Some(ast::Item::MacroDef(mac)) => {
+ assert_eq!(current_macro, Some(mac.into()));
+ current_macro = None;
+ macro_highlighter = MacroHighlighter::default();
+ }
+ Some(item) if current_attr_call.as_ref().map_or(false, |it| *it == item) => {
+ current_attr_call = None
+ }
+ None if ast::Attr::can_cast(node.kind()) => inside_attribute = false,
+ _ => (),
+ },