about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael van Straten <michael@vanstraten.de>2023-04-19 13:02:30 +0200
committerMichael van Straten <michael@vanstraten.de>2023-04-19 13:02:30 +0200
commit3d49cc1198f2e79b093b8e96520095e793b3970d (patch)
tree7c9f3e44557b1fc77983ea98bb4814366075f30f
parentc67ae04acae514ba9a3ce04fde12d1bb23cf5ca1 (diff)
downloadrust-3d49cc1198f2e79b093b8e96520095e793b3970d.tar.gz
rust-3d49cc1198f2e79b093b8e96520095e793b3970d.zip
Translated absolute byte offset to relative
-rw-r--r--compiler/rustc_expand/src/proc_macro_server.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/compiler/rustc_expand/src/proc_macro_server.rs b/compiler/rustc_expand/src/proc_macro_server.rs
index 71dfd3158dc..eb5a78d271f 100644
--- a/compiler/rustc_expand/src/proc_macro_server.rs
+++ b/compiler/rustc_expand/src/proc_macro_server.rs
@@ -635,7 +635,15 @@ impl server::Span for Rustc<'_, '_> {
     }
 
     fn byte_range(&mut self, span: Self::Span) -> Range<usize> {
-        Range { start: span.lo().0 as usize, end: span.hi().0 as usize }
+        let source_map = self.sess().source_map();
+
+        let relative_start_pos = source_map.lookup_byte_offset(span.lo()).pos;
+        let relative_end_pos = source_map.lookup_byte_offset(span.hi()).pos;
+
+        Range {
+            start: relative_start_pos.0 as usize,
+            end: relative_end_pos.0 as usize
+        }
     }
 
     fn start(&mut self, span: Self::Span) -> LineColumn {