Auto merge of #41668 - kennytm:fix-issue-41652, r=jonathandturner
Fix issue #41652 Fix issue #41652. Don't print anything in `render_source_line()` if no source code is given. (cc @jonathandturner #34789)
This commit is contained in:
commit
5b31bf8511
4 changed files with 63 additions and 2 deletions
|
@ -270,8 +270,10 @@ impl EmitterWriter {
|
||||||
line: &Line,
|
line: &Line,
|
||||||
width_offset: usize,
|
width_offset: usize,
|
||||||
code_offset: usize) -> Vec<(usize, Style)> {
|
code_offset: usize) -> Vec<(usize, Style)> {
|
||||||
let source_string = file.get_line(line.line_index - 1)
|
let source_string = match file.get_line(line.line_index - 1) {
|
||||||
.unwrap_or("");
|
Some(s) => s,
|
||||||
|
None => return Vec::new(),
|
||||||
|
};
|
||||||
|
|
||||||
let line_offset = buffer.num_lines();
|
let line_offset = buffer.num_lines();
|
||||||
|
|
||||||
|
@ -909,6 +911,11 @@ impl EmitterWriter {
|
||||||
|
|
||||||
// Print out the annotate source lines that correspond with the error
|
// Print out the annotate source lines that correspond with the error
|
||||||
for annotated_file in annotated_files {
|
for annotated_file in annotated_files {
|
||||||
|
// we can't annotate anything if the source is unavailable.
|
||||||
|
if annotated_file.file.src.is_none() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// print out the span location and spacer before we print the annotated source
|
// print out the span location and spacer before we print the annotated source
|
||||||
// to do this, we need to know if this span will be primary
|
// to do this, we need to know if this span will be primary
|
||||||
let is_primary = primary_lo.file.name == annotated_file.file.name;
|
let is_primary = primary_lo.file.name == annotated_file.file.name;
|
||||||
|
|
16
src/test/ui/issue-41652/auxiliary/issue_41652_b.rs
Normal file
16
src/test/ui/issue-41652/auxiliary/issue_41652_b.rs
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
// file at the top-level directory of this distribution and at
|
||||||
|
// http://rust-lang.org/COPYRIGHT.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
pub trait Tr {
|
||||||
|
// Note: The function needs to be declared over multiple lines to reproduce
|
||||||
|
// the crash. DO NOT reformat.
|
||||||
|
fn f()
|
||||||
|
where Self: Sized;
|
||||||
|
}
|
26
src/test/ui/issue-41652/issue_41652.rs
Normal file
26
src/test/ui/issue-41652/issue_41652.rs
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
// file at the top-level directory of this distribution and at
|
||||||
|
// http://rust-lang.org/COPYRIGHT.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
// aux-build:issue_41652_b.rs
|
||||||
|
|
||||||
|
extern crate issue_41652_b;
|
||||||
|
|
||||||
|
struct S;
|
||||||
|
|
||||||
|
impl issue_41652_b::Tr for S {
|
||||||
|
fn f() {
|
||||||
|
3.f()
|
||||||
|
//~^ ERROR no method named `f` found for type `{integer}` in the current scope
|
||||||
|
//~| NOTE found the following associated functions
|
||||||
|
//~| NOTE candidate #1 is defined in the trait `issue_41652_b::Tr`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
12
src/test/ui/issue-41652/issue_41652.stderr
Normal file
12
src/test/ui/issue-41652/issue_41652.stderr
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
error: no method named `f` found for type `{integer}` in the current scope
|
||||||
|
--> $DIR/issue_41652.rs:19:11
|
||||||
|
|
|
||||||
|
19 | 3.f()
|
||||||
|
| ^
|
||||||
|
|
|
||||||
|
= note: found the following associated functions; to be used as methods, functions must have a `self` parameter
|
||||||
|
note: candidate #1 is defined in the trait `issue_41652_b::Tr`
|
||||||
|
= help: to disambiguate the method call, write `issue_41652_b::Tr::f(3)` instead
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue