]> git.lizzy.rs Git - rust.git/commitdiff
Replace lookup_char_pos with lookup_line
authortopecongiro <seuchida@gmail.com>
Sun, 18 Feb 2018 09:08:21 +0000 (18:08 +0900)
committertopecongiro <seuchida@gmail.com>
Mon, 19 Feb 2018 03:52:40 +0000 (12:52 +0900)
`lookup_char_pos` wastes time on fetching unused information. We only need a
`FileMap` and line numbers, so `lookup_line` is enough.

rustfmt-core/src/codemap.rs

index 85716f73615539c354b286027c8916471d43bf16..7292f7f35d1e1d4ce0e478116c444c0c76118eb4 100644 (file)
@@ -68,19 +68,20 @@ fn opt_span_after(&self, original: Span, needle: &str) -> Option<BytePos> {
 
 impl LineRangeUtils for CodeMap {
     fn lookup_line_range(&self, span: Span) -> LineRange {
-        let lo = self.lookup_char_pos(span.lo());
-        let hi = self.lookup_char_pos(span.hi());
+        let lo = self.lookup_line(span.lo()).unwrap();
+        let hi = self.lookup_line(span.hi()).unwrap();
 
         assert_eq!(
-            lo.file.name, hi.file.name,
+            lo.fm.name, hi.fm.name,
             "span crossed file boundary: lo: {:?}, hi: {:?}",
             lo, hi
         );
 
+        // Line numbers start at 1
         LineRange {
-            file: lo.file.clone(),
-            lo: lo.line,
-            hi: hi.line,
+            file: lo.fm.clone(),
+            lo: lo.line + 1,
+            hi: hi.line + 1,
         }
     }
 }