fn check_nested_macro(
    sess: &ParseSess,
    node_id: NodeId,
    macro_rules: bool,
    tts: &[TokenTree],
    macros: &Stack<'_, MacroState<'_>>,
    valid: &mut bool
) -> usize
Expand description

Checks the body of nested macro, returns where the check stopped, and sets valid to false in case of errors.

The token trees are checked as long as they look like a list of (LHS) => {RHS} token trees. This check is a best-effort to detect a macro definition. It returns the position in tts where we stopped checking because we detected we were not in a macro definition anymore.


  • sess is used to emit diagnostics and lints
  • node_id is used to emit lints
  • macro_rules specifies whether the macro is macro_rules
  • tts is checked as a list of (LHS) => {RHS}
  • macros is the stack of outer macros
  • valid is set in case of errors