mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 22:31:43 +00:00
Fix shift id for delim and other tokens
This commit is contained in:
parent
320416d756
commit
325532d119
1 changed files with 15 additions and 3 deletions
|
@ -67,7 +67,15 @@ impl Shift {
|
||||||
.token_trees
|
.token_trees
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|tt| match tt {
|
.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))
|
tt::TokenTree::Leaf(tt::Leaf::Ident(ident))
|
||||||
if ident.id != tt::TokenId::unspecified() =>
|
if ident.id != tt::TokenId::unspecified() =>
|
||||||
{
|
{
|
||||||
|
@ -85,9 +93,13 @@ impl Shift {
|
||||||
match t {
|
match t {
|
||||||
tt::TokenTree::Leaf(leaf) => match leaf {
|
tt::TokenTree::Leaf(leaf) => match leaf {
|
||||||
tt::Leaf::Ident(ident) => ident.id = self.shift(ident.id),
|
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…
Add table
Add a link
Reference in a new issue