Skip to content

Commit 289729a

Browse files
authored
Merge pull request rust-lang#19839 from ChayimFriedman2/inlay-hints-attr
fix: Correctly set the span of the proc_macro crate's Group delimiters
2 parents 8f30130 + 226db31 commit 289729a

File tree

4 files changed

+15
-5
lines changed

4 files changed

+15
-5
lines changed

src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,9 @@ impl server::TokenStream for RaSpanServer {
258258
&mut self,
259259
stream: Self::TokenStream,
260260
) -> Vec<bridge::TokenTree<Self::TokenStream, Self::Span, Self::Symbol>> {
261-
stream.into_bridge()
261+
stream.into_bridge(&mut |first, second| {
262+
server::Span::join(self, first, second).unwrap_or(first)
263+
})
262264
}
263265
}
264266

src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/token_id.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,8 @@ impl server::TokenStream for TokenIdServer {
238238
&mut self,
239239
stream: Self::TokenStream,
240240
) -> Vec<bridge::TokenTree<Self::TokenStream, Self::Span, Self::Symbol>> {
241-
stream.into_bridge()
241+
// Can't join with `TokenId`.
242+
stream.into_bridge(&mut |first, _second| first)
242243
}
243244
}
244245

src/tools/rust-analyzer/crates/proc-macro-srv/src/server_impl/token_stream.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,10 @@ impl<S: Copy> TokenStream<S> {
5656
self.token_trees.is_empty()
5757
}
5858

59-
pub(crate) fn into_bridge(self) -> Vec<bridge::TokenTree<Self, S, intern::Symbol>> {
59+
pub(crate) fn into_bridge(
60+
self,
61+
join_spans: &mut dyn FnMut(S, S) -> S,
62+
) -> Vec<bridge::TokenTree<Self, S, intern::Symbol>> {
6063
let mut result = Vec::new();
6164
let mut iter = self.token_trees.into_iter();
6265
while let Some(tree) = iter.next() {
@@ -98,7 +101,11 @@ impl<S: Copy> TokenStream<S> {
98101
token_trees: iter.by_ref().take(subtree.usize_len()).collect(),
99102
})
100103
},
101-
span: bridge::DelimSpan::from_single(subtree.delimiter.open),
104+
span: bridge::DelimSpan {
105+
open: subtree.delimiter.open,
106+
close: subtree.delimiter.close,
107+
entire: join_spans(subtree.delimiter.open, subtree.delimiter.close),
108+
},
102109
}))
103110
}
104111
}

src/tools/rust-analyzer/crates/proc-macro-srv/src/tests/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ fn test_fn_like_macro_clone_ident_subtree() {
144144
SUBTREE $$ 42:[email protected]#ROOT2024 42:[email protected]#ROOT2024
145145
IDENT ident 42:[email protected]#ROOT2024
146146
PUNCH , [alone] 42:[email protected]#ROOT2024
147-
SUBTREE [] 42:2@7..8#ROOT2024 42:2@7..8#ROOT2024"#]],
147+
SUBTREE [] 42:2@7..9#ROOT2024 42:2@7..9#ROOT2024"#]],
148148
);
149149
}
150150

0 commit comments

Comments
 (0)