]> git.lizzy.rs Git - rust.git/commitdiff
rustc: Exclude stdin from codemap files when lookup_pos
authorHaitao Li <lihaitao@gmail.com>
Wed, 21 Dec 2011 11:50:45 +0000 (19:50 +0800)
committerHaitao Li <lihaitao@gmail.com>
Wed, 21 Dec 2011 14:07:48 +0000 (22:07 +0800)
Fixes issue #1362

src/comp/syntax/codemap.rs

index 8cdbcd32caef5706421d09a08558e289ba2f9519..f08bec73a3d64cb1b284ca3980febe4d794be9bd 100644 (file)
@@ -35,15 +35,17 @@ fn next_line(file: filemap, chpos: uint, byte_pos: uint) {
 
 fn lookup_pos(map: codemap, pos: uint, lookup: lookup_fn) -> loc {
     let len = vec::len(map.files);
+    if len > 1u && map.files[len - 1u].name == "-" {
+        // the trailing "-" must be the core_macros inserted by expand_crate,
+        // exclude it from the targets to lookup
+        len = len - 1u;
+    }
     let a = 0u;
     let b = len;
     while b - a > 1u {
         let m = (a + b) / 2u;
         if lookup(map.files[m].start_pos) > pos { b = m; } else { a = m; }
     }
-    if (a >= len) {
-        ret { filename: "-", line: 0u, col: 0u };
-    }
     let f = map.files[a];
     a = 0u;
     b = vec::len(f.lines);