Fix mbe::Shift::new not accounting for non-ident token ids

This commit is contained in:
Lukas Wirth 2021-11-22 18:00:32 +01:00
parent 0bc3003960
commit a9c4c6da4c
2 changed files with 10 additions and 7 deletions

View file

@ -27,7 +27,7 @@ macro_rules! f {
f!(struct MyTraitMap2);
"#,
expect![[r##"
// call ids will be shifted by Shift(27)
// call ids will be shifted by Shift(30)
// +tokenids
macro_rules! f {#0
(#1 struct#2 $#3ident#4:#5ident#6 )#1 =#7>#8 {#9
@ -39,7 +39,7 @@ macro_rules! f {#0
// // +tokenids
// f!(struct#1 MyTraitMap2#2);
struct#10 MyTraitMap2#29 {#13
struct#10 MyTraitMap2#32 {#13
map#14:#15 ::std#18::collections#21::HashSet#24<#25(#26)#26>#27,#28
}#13
"##]],

View file

@ -120,12 +120,15 @@ impl Shift {
_ => tree_id,
}
}
tt::TokenTree::Leaf(tt::Leaf::Ident(ident))
if ident.id != tt::TokenId::unspecified() =>
{
Some(ident.id.0)
tt::TokenTree::Leaf(leaf) => {
let id = match leaf {
tt::Leaf::Literal(it) => it.id,
tt::Leaf::Punct(it) => it.id,
tt::Leaf::Ident(it) => it.id,
};
(id != tt::TokenId::unspecified()).then(|| id.0)
}
_ => None,
})
.max()
}