mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 05:23:24 +00:00
Merge #10378
10378: fix: Implement most proc_macro span handling methods r=jonas-schievink a=jonas-schievink This closes https://github.com/rust-analyzer/rust-analyzer/issues/10368 – some APIs are still missing, but they are either for unstable features or require https://github.com/rust-analyzer/rust-analyzer/issues/9403 bors r+ Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
This commit is contained in:
commit
533ca584c3
1 changed files with 24 additions and 25 deletions
|
@ -424,19 +424,20 @@ impl server::Group for Rustc {
|
||||||
group.delimiter.map(|it| it.id).unwrap_or_else(tt::TokenId::unspecified)
|
group.delimiter.map(|it| it.id).unwrap_or_else(tt::TokenId::unspecified)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_span(&mut self, _group: &mut Self::Group, _span: Self::Span) {
|
fn set_span(&mut self, group: &mut Self::Group, span: Self::Span) {
|
||||||
// FIXME handle span
|
if let Some(delim) = &mut group.delimiter {
|
||||||
|
delim.id = span;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn span_open(&mut self, _group: &Self::Group) -> Self::Span {
|
fn span_open(&mut self, group: &Self::Group) -> Self::Span {
|
||||||
// FIXME handle span
|
// FIXME we only store one `TokenId` for the delimiters
|
||||||
// MySpan(self.span_interner.intern(&MySpanData(group.span_open())))
|
group.delimiter.map(|it| it.id).unwrap_or_else(tt::TokenId::unspecified)
|
||||||
tt::TokenId::unspecified()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn span_close(&mut self, _group: &Self::Group) -> Self::Span {
|
fn span_close(&mut self, group: &Self::Group) -> Self::Span {
|
||||||
// FIXME handle span
|
// FIXME we only store one `TokenId` for the delimiters
|
||||||
tt::TokenId::unspecified()
|
group.delimiter.map(|it| it.id).unwrap_or_else(tt::TokenId::unspecified)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -454,13 +455,11 @@ impl server::Punct for Rustc {
|
||||||
fn spacing(&mut self, punct: Self::Punct) -> bridge::Spacing {
|
fn spacing(&mut self, punct: Self::Punct) -> bridge::Spacing {
|
||||||
spacing_to_external(punct.spacing)
|
spacing_to_external(punct.spacing)
|
||||||
}
|
}
|
||||||
fn span(&mut self, _punct: Self::Punct) -> Self::Span {
|
fn span(&mut self, punct: Self::Punct) -> Self::Span {
|
||||||
// FIXME handle span
|
punct.id
|
||||||
tt::TokenId::unspecified()
|
|
||||||
}
|
}
|
||||||
fn with_span(&mut self, punct: Self::Punct, _span: Self::Span) -> Self::Punct {
|
fn with_span(&mut self, punct: Self::Punct, span: Self::Span) -> Self::Punct {
|
||||||
// FIXME handle span
|
tt::Punct { id: span, ..punct }
|
||||||
punct
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -474,13 +473,13 @@ impl server::Ident for Rustc {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn span(&mut self, _ident: Self::Ident) -> Self::Span {
|
fn span(&mut self, ident: Self::Ident) -> Self::Span {
|
||||||
// FIXME handle span
|
self.ident_interner.get(ident.0).0.id
|
||||||
tt::TokenId::unspecified()
|
|
||||||
}
|
}
|
||||||
fn with_span(&mut self, ident: Self::Ident, _span: Self::Span) -> Self::Ident {
|
fn with_span(&mut self, ident: Self::Ident, span: Self::Span) -> Self::Ident {
|
||||||
// FIXME handle span
|
let data = self.ident_interner.get(ident.0);
|
||||||
ident
|
let new = IdentData(tt::Ident { id: span, ..data.0.clone() });
|
||||||
|
IdentId(self.ident_interner.intern(&new))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -500,8 +499,8 @@ impl server::Literal for Rustc {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
fn to_string(&mut self, _literal: &Self::Literal) -> String {
|
fn to_string(&mut self, literal: &Self::Literal) -> String {
|
||||||
_literal.to_string()
|
literal.to_string()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn integer(&mut self, n: &str) -> Self::Literal {
|
fn integer(&mut self, n: &str) -> Self::Literal {
|
||||||
|
@ -581,8 +580,8 @@ impl server::Literal for Rustc {
|
||||||
literal.id
|
literal.id
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_span(&mut self, _literal: &mut Self::Literal, _span: Self::Span) {
|
fn set_span(&mut self, literal: &mut Self::Literal, span: Self::Span) {
|
||||||
// FIXME handle span
|
literal.id = span;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn subspan(
|
fn subspan(
|
||||||
|
|
Loading…
Reference in a new issue