Skip to content

Inert attributes in $expr nonterminals are sometimes duplicated #86055

Closed

Description

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

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

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions