Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs')
-rw-r--r--crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs14
1 files changed, 7 insertions, 7 deletions
diff --git a/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs b/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs
index eacb100fbc..c114d52ec3 100644
--- a/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs
+++ b/crates/proc-macro-srv/src/server_impl/rust_analyzer_span.rs
@@ -177,7 +177,9 @@ impl server::Server for RaSpanServer<'_> {
span
}
fn span_byte_range(&mut self, span: Self::Span) -> Range<usize> {
- // FIXME requires db to resolve the ast id, THIS IS NOT INCREMENTAL
+ if let Some(cb) = self.callback.as_mut() {
+ return cb.byte_range(span);
+ }
Range { start: span.range.start().into(), end: span.range.end().into() }
}
fn span_join(&mut self, first: Self::Span, second: Self::Span) -> Option<Self::Span> {
@@ -272,14 +274,12 @@ impl server::Server for RaSpanServer<'_> {
Span { range: TextRange::empty(span.range.start()), ..span }
}
- fn span_line(&mut self, _span: Self::Span) -> usize {
- // FIXME requires db to resolve line index, THIS IS NOT INCREMENTAL
- 1
+ fn span_line(&mut self, span: Self::Span) -> usize {
+ self.callback.as_mut().and_then(|cb| cb.line_column(span)).map_or(1, |(l, _)| l as usize)
}
- fn span_column(&mut self, _span: Self::Span) -> usize {
- // FIXME requires db to resolve line index, THIS IS NOT INCREMENTAL
- 1
+ fn span_column(&mut self, span: Self::Span) -> usize {
+ self.callback.as_mut().and_then(|cb| cb.line_column(span)).map_or(1, |(_, c)| c as usize)
}
fn symbol_normalize_and_validate_ident(&mut self, string: &str) -> Result<Self::Symbol, ()> {