Skip to content
This repository was archived by the owner on Oct 6, 2024. It is now read-only.
This repository was archived by the owner on Oct 6, 2024. It is now read-only.

Paste sometimes produces keywords #74

@simon-bourne

Description

@simon-bourne

Paste will produce a keyword instead of an identifier in some cases:

use paste::paste;

macro_rules! empty_items{
    ($name:ident $(- $name_tail:ident)*) => { paste!{
        struct [< $name:camel $( $name_tail)* >];

        fn [< $name:snake $( _ $name_tail:snake)* >]() {}
    }}
}

empty_items!(r#loop); // Error: expected identifier, found keyword `loop`
empty_items!(se-lf); // Error: expected identifier, found keyword `Self`
empty_items!(Loop); // Error: expected identifier, found keyword `loop`
empty_items!(r#loop-xyz); // Ok

Note that fixing this would be a breaking change as currently paste could be (ab)used to remove the r# from raw idents (say, for stringify!).

Maybe it's also worth thinking about whether, for example, paste!{ [< loop >] } should produce a raw identifier, rather than a keyword.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions