proc_macro: Accept $crate
as an identifier if it comes from the compiler
This commit is contained in:
parent
8a8ef260be
commit
2bc67da378
3 changed files with 34 additions and 0 deletions
|
@ -150,6 +150,8 @@ impl FromInternal<(TokenStream, &'_ ParseSess, &'_ mut Vec<Self>)>
|
|||
Question => op!('?'),
|
||||
SingleQuote => op!('\''),
|
||||
|
||||
Ident(ident, false) if ident.name == keywords::DollarCrate.name() =>
|
||||
tt!(Ident::dollar_crate()),
|
||||
Ident(ident, is_raw) => tt!(Ident::new(ident.name, is_raw)),
|
||||
Lifetime(ident) => {
|
||||
let ident = ident.without_first_quote();
|
||||
|
@ -359,6 +361,10 @@ impl Ident {
|
|||
}
|
||||
Ident { sym, is_raw, span }
|
||||
}
|
||||
fn dollar_crate(span: Span) -> Ident {
|
||||
// `$crate` is accepted as an ident only if it comes from the compiler.
|
||||
Ident { sym: keywords::DollarCrate.name(), is_raw: false, span }
|
||||
}
|
||||
}
|
||||
|
||||
// FIXME(eddyb) `Literal` should not expose internal `Debug` impls.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue