Skip to content

Inert attributes in $expr nonterminals are sometimes duplicated #86055

Closed
@petrochenkov

Description

@petrochenkov

Reproducer:

macro mac($expr:expr) {
    print_bang!($expr);
}

fn main() {
    mac!(#[allow(warnings)] 0);
}

where print_bang is a proc macro from https://github.com/rust-lang/rust/blob/master/src/test/ui/proc-macro/auxiliary/test-macros.rs

The result looks like this:

PRINT-BANG INPUT (DISPLAY): #[allow(warnings)] 0
PRINT-BANG RE-COLLECTED (DISPLAY): #[allow(warnings)] #[allow(warnings)] 0

The issue can be reproduced after merging #84995, before that PR the example ICEs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-attributesArea: Attributes (`#[…]`, `#![…]`)A-macrosArea: All kinds of macros (custom derive, macro_rules!, proc macros, ..)C-bugCategory: This is a bug.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions