When calling `to_string()` on an identifier, the returned string will have an `r#` prefix if the original identifer was a raw identifier. This prefix needs to be removed if the identifier is interpolated into another identifier (e.g. `__some_prefix__r#other_ident`) in order for the new identifier to be valid. This issue was previously masked due to the fact that the relevant test uses `r#i32`. It's possible to use `i32` as a normal (non-raw) ident - due to a bug in rustc, this means that the user-supplied `r#` prefix will be lost when calling `to_string()`. This bug will eventually be fixed, causing `to_string()` to start returning `r#i32` instead of `i32`. This commit strips the `r#` prefix (if present) from an identifier before using it to construct a new identifier. The relevant test is updated to use `r#match`, which actually requires the `r#` prefix to be a valid identifier. This causes the test to fail without this patch on current versions of Rust. |
||
---|---|---|
.. | ||
src | ||
Cargo.toml |