diff options
| author | Ted Mielczarek <ted@mielczarek.org> | 2016-06-09 16:36:20 -0400 |
|---|---|---|
| committer | Ted Mielczarek <ted@mielczarek.org> | 2016-06-16 18:08:46 +0100 |
| commit | 24e7491660845e52240afc36acf332b92547b0a1 (patch) | |
| tree | 106c01facc7fbff9a373112707b34eb383a93b89 /src/libsyntax/errors | |
| parent | a479a6a7a6fa1bfe1f18d7d7411ad14e7b8ca17b (diff) | |
| download | rust-24e7491660845e52240afc36acf332b92547b0a1.tar.gz rust-24e7491660845e52240afc36acf332b92547b0a1.zip | |
Add an abs_path member to FileMap, use it when writing debug info.
When items are inlined from extern crates, the filename in the debug info is taken from the FileMap that's serialized in the rlib metadata. Currently this is just FileMap.name, which is whatever path is passed to rustc. Since libcore and libstd are built by invoking rustc with relative paths, they wind up with relative paths in the rlib, and when linked into a binary the debug info uses relative paths for the names, but since the compilation directory for the final binary, tools trying to read source filenames will wind up with bad paths. We noticed this in Firefox with source filenames from libcore/libstd having bad paths. This change stores an absolute path in FileMap.abs_path, and uses that if available for writing debug info. This is not going to magically make debuggers able to find the source, but it will at least provide sensible paths.
Diffstat (limited to 'src/libsyntax/errors')
| -rw-r--r-- | src/libsyntax/errors/emitter.rs | 10 | ||||
| -rw-r--r-- | src/libsyntax/errors/snippet/test.rs | 28 |
2 files changed, 19 insertions, 19 deletions
diff --git a/src/libsyntax/errors/emitter.rs b/src/libsyntax/errors/emitter.rs index 6b15aa4f92c..71a03e846a2 100644 --- a/src/libsyntax/errors/emitter.rs +++ b/src/libsyntax/errors/emitter.rs @@ -668,7 +668,7 @@ mod test { tolv dreizehn "; - let file = cm.new_filemap_and_lines("dummy.txt", content); + let file = cm.new_filemap_and_lines("dummy.txt", None, content); let start = file.lines.borrow()[10]; let end = file.lines.borrow()[11]; let sp = mk_sp(start, end); @@ -694,7 +694,7 @@ mod test { let cm = CodeMap::new(); let inputtext = "aaaaa\nbbbbBB\nCCC\nDDDDDddddd\neee\n"; let selection = " \n ~~\n~~~\n~~~~~ \n \n"; - cm.new_filemap_and_lines("blork.rs", inputtext); + cm.new_filemap_and_lines("blork.rs", None, inputtext); let sp = span_from_selection(inputtext, selection); let msp: MultiSpan = sp.into(); @@ -717,7 +717,7 @@ mod test { let inputtext = "aaaaa\nbbbbBB\nCCC\nDDDDDddddd\neee\n"; let selection1 = " \n \n \n \n ~ \n"; // intentionally out of order let selection2 = " \n ~~\n~~~\n~~~~~ \n \n"; - cm.new_filemap_and_lines("blork.rs", inputtext); + cm.new_filemap_and_lines("blork.rs", None, inputtext); let sp1 = span_from_selection(inputtext, selection1); let sp2 = span_from_selection(inputtext, selection2); let msp: MultiSpan = MultiSpan::from_spans(vec![sp1, sp2]); @@ -757,7 +757,7 @@ mod test { assert_eq!(&cm.span_to_snippet(sp).unwrap(), expected); sp }; - cm.new_filemap_and_lines("dummy.txt", inp); + cm.new_filemap_and_lines("dummy.txt", None, inp); let sp1 = span(sp1, "aaaaaa"); let sp2 = span(sp2, "bbbbbb"); let sp3 = span(sp3, "ccccc"); @@ -802,7 +802,7 @@ mod test { ddd__eee_\n\ elided\n\ __f_gg"; - let file = cm.new_filemap_and_lines("dummy.txt", inp); + let file = cm.new_filemap_and_lines("dummy.txt", None, inp); let span = |lo, hi, (off_lo, off_hi)| { let lines = file.lines.borrow(); diff --git a/src/libsyntax/errors/snippet/test.rs b/src/libsyntax/errors/snippet/test.rs index 51fe4572dbc..79e40a09165 100644 --- a/src/libsyntax/errors/snippet/test.rs +++ b/src/libsyntax/errors/snippet/test.rs @@ -88,7 +88,7 @@ fn foo() { "; let cm = Rc::new(CodeMap::new()); - let foo = cm.new_filemap_and_lines("foo.rs", file_text); + let foo = cm.new_filemap_and_lines("foo.rs", None, file_text); let span_bar = cm.span_substr(&foo, file_text, "bar", 0); let mut snippet = SnippetData::new(cm, Some(span_bar)); @@ -113,7 +113,7 @@ fn foo() { "#; let cm = Rc::new(CodeMap::new()); - let foo = cm.new_filemap_and_lines("foo.rs", file_text); + let foo = cm.new_filemap_and_lines("foo.rs", None, file_text); let span_vec0 = cm.span_substr(&foo, file_text, "vec", 0); let span_vec1 = cm.span_substr(&foo, file_text, "vec", 1); let span_semi = cm.span_substr(&foo, file_text, ";", 0); @@ -173,12 +173,12 @@ fn bar() { "#; let cm = Rc::new(CodeMap::new()); - let foo_map = cm.new_filemap_and_lines("foo.rs", file_text_foo); + let foo_map = cm.new_filemap_and_lines("foo.rs", None, file_text_foo); let span_foo_vec0 = cm.span_substr(&foo_map, file_text_foo, "vec", 0); let span_foo_vec1 = cm.span_substr(&foo_map, file_text_foo, "vec", 1); let span_foo_semi = cm.span_substr(&foo_map, file_text_foo, ";", 0); - let bar_map = cm.new_filemap_and_lines("bar.rs", file_text_bar); + let bar_map = cm.new_filemap_and_lines("bar.rs", None, file_text_bar); let span_bar_vec0 = cm.span_substr(&bar_map, file_text_bar, "vec", 0); let span_bar_vec1 = cm.span_substr(&bar_map, file_text_bar, "vec", 1); let span_bar_semi = cm.span_substr(&bar_map, file_text_bar, ";", 0); @@ -235,7 +235,7 @@ fn foo() { "#; let cm = Rc::new(CodeMap::new()); - let foo = cm.new_filemap_and_lines("foo.rs", file_text); + let foo = cm.new_filemap_and_lines("foo.rs", None, file_text); let span_data0 = cm.span_substr(&foo, file_text, "data", 0); let span_data1 = cm.span_substr(&foo, file_text, "data", 1); let span_rbrace = cm.span_substr(&foo, file_text, "}", 3); @@ -274,7 +274,7 @@ fn foo() { "#; let cm = Rc::new(CodeMap::new()); - let foo = cm.new_filemap_and_lines("foo.rs", file_text); + let foo = cm.new_filemap_and_lines("foo.rs", None, file_text); let span0 = cm.span_substr(&foo, file_text, "vec.push", 0); let span1 = cm.span_substr(&foo, file_text, "vec", 0); let span2 = cm.span_substr(&foo, file_text, "ec.push", 0); @@ -312,7 +312,7 @@ fn foo() { "#; let cm = Rc::new(CodeMap::new()); - let foo = cm.new_filemap_and_lines("foo.rs", file_text); + let foo = cm.new_filemap_and_lines("foo.rs", None, file_text); let span_vec0 = cm.span_substr(&foo, file_text, "vec", 0); let span_vec1 = cm.span_substr(&foo, file_text, "vec", 1); let span_semi = cm.span_substr(&foo, file_text, ";", 0); @@ -354,7 +354,7 @@ fn foo() { "#; let cm = Rc::new(CodeMap::new()); - let foo = cm.new_filemap_and_lines("foo.rs", file_text); + let foo = cm.new_filemap_and_lines("foo.rs", None, file_text); let span_vec0 = cm.span_substr(&foo, file_text, "vec", 3); let span_vec1 = cm.span_substr(&foo, file_text, "vec", 8); @@ -393,7 +393,7 @@ fn foo() { "#; let cm = Rc::new(CodeMap::new()); - let foo = cm.new_filemap_and_lines("foo.rs", file_text); + let foo = cm.new_filemap_and_lines("foo.rs", None, file_text); let mut snippet = SnippetData::new(cm.clone(), None); for i in 0..4 { @@ -427,7 +427,7 @@ impl SomeTrait for () { "#; let cm = Rc::new(CodeMap::new()); - let foo = cm.new_filemap_and_lines("foo.rs", file_text); + let foo = cm.new_filemap_and_lines("foo.rs", None, file_text); let mut snippet = SnippetData::new(cm.clone(), None); let fn_span = cm.span_substr(&foo, file_text, "fn", 0); @@ -456,7 +456,7 @@ fn span_overlap_label() { "#; let cm = Rc::new(CodeMap::new()); - let foo = cm.new_filemap_and_lines("foo.rs", file_text); + let foo = cm.new_filemap_and_lines("foo.rs", None, file_text); let mut snippet = SnippetData::new(cm.clone(), None); let fn_span = cm.span_substr(&foo, file_text, "fn foo(x: u32)", 0); @@ -491,7 +491,7 @@ fn span_overlap_label2() { "#; let cm = Rc::new(CodeMap::new()); - let foo = cm.new_filemap_and_lines("foo.rs", file_text); + let foo = cm.new_filemap_and_lines("foo.rs", None, file_text); let mut snippet = SnippetData::new(cm.clone(), None); let fn_span = cm.span_substr(&foo, file_text, "fn foo(x", 0); @@ -529,7 +529,7 @@ fn span_overlap_label3() { "#; let cm = Rc::new(CodeMap::new()); - let foo = cm.new_filemap_and_lines("foo.rs", file_text); + let foo = cm.new_filemap_and_lines("foo.rs", None, file_text); let mut snippet = SnippetData::new(cm.clone(), None); @@ -578,7 +578,7 @@ fn main() { let cm = Rc::new(CodeMap::new()); - let foo = cm.new_filemap_and_lines("foo.rs", file_text); + let foo = cm.new_filemap_and_lines("foo.rs", None, file_text); let mut rbrace_span = cm.span_substr(&foo, file_text, "}", 1); rbrace_span.lo = rbrace_span.hi; |
