Fix shift id for delim and other tokens
This commit is contained in:
parent
320416d756
commit
325532d119
@ -67,7 +67,15 @@ impl Shift {
|
||||
.token_trees
|
||||
.iter()
|
||||
.filter_map(|tt| match tt {
|
||||
tt::TokenTree::Subtree(subtree) => max_id(subtree),
|
||||
tt::TokenTree::Subtree(subtree) => {
|
||||
let tree_id = max_id(subtree);
|
||||
match subtree.delimiter {
|
||||
Some(it) if it.id != tt::TokenId::unspecified() => {
|
||||
Some(tree_id.map_or(it.id.0, |t| t.max(it.id.0)))
|
||||
}
|
||||
_ => tree_id,
|
||||
}
|
||||
}
|
||||
tt::TokenTree::Leaf(tt::Leaf::Ident(ident))
|
||||
if ident.id != tt::TokenId::unspecified() =>
|
||||
{
|
||||
@ -85,9 +93,13 @@ impl Shift {
|
||||
match t {
|
||||
tt::TokenTree::Leaf(leaf) => match leaf {
|
||||
tt::Leaf::Ident(ident) => ident.id = self.shift(ident.id),
|
||||
_ => (),
|
||||
tt::Leaf::Punct(punct) => punct.id = self.shift(punct.id),
|
||||
tt::Leaf::Literal(lit) => lit.id = self.shift(lit.id),
|
||||
},
|
||||
tt::TokenTree::Subtree(tt) => self.shift_all(tt),
|
||||
tt::TokenTree::Subtree(tt) => {
|
||||
tt.delimiter.as_mut().map(|it: &mut Delimiter| it.id = self.shift(it.id));
|
||||
self.shift_all(tt)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user