diagnostics: fix crash on completely empty included file
This commit is contained in:
parent
1b73c7d1e5
commit
1c41dd6320
2 changed files with 12 additions and 4 deletions
|
@ -1513,7 +1513,9 @@ impl HumanEmitter {
|
||||||
for line_idx in 0..annotated_file.lines.len() {
|
for line_idx in 0..annotated_file.lines.len() {
|
||||||
let file = annotated_file.file.clone();
|
let file = annotated_file.file.clone();
|
||||||
let line = &annotated_file.lines[line_idx];
|
let line = &annotated_file.lines[line_idx];
|
||||||
if let Some(source_string) = file.get_line(line.line_index - 1) {
|
if let Some(source_string) =
|
||||||
|
line.line_index.checked_sub(1).and_then(|l| file.get_line(l))
|
||||||
|
{
|
||||||
let leading_whitespace = source_string
|
let leading_whitespace = source_string
|
||||||
.chars()
|
.chars()
|
||||||
.take_while(|c| c.is_whitespace())
|
.take_while(|c| c.is_whitespace())
|
||||||
|
@ -1553,7 +1555,10 @@ impl HumanEmitter {
|
||||||
for line in &annotated_file.lines {
|
for line in &annotated_file.lines {
|
||||||
max_line_len = max(
|
max_line_len = max(
|
||||||
max_line_len,
|
max_line_len,
|
||||||
annotated_file.file.get_line(line.line_index - 1).map_or(0, |s| s.len()),
|
line.line_index
|
||||||
|
.checked_sub(1)
|
||||||
|
.and_then(|l| annotated_file.file.get_line(l))
|
||||||
|
.map_or(0, |s| s.len()),
|
||||||
);
|
);
|
||||||
for ann in &line.annotations {
|
for ann in &line.annotations {
|
||||||
span_right_margin = max(span_right_margin, ann.start_col.display);
|
span_right_margin = max(span_right_margin, ann.start_col.display);
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/mismatched-types.rs:2:20
|
--> $DIR/file.txt:0:1
|
||||||
|
|
|
||||||
|
|
|
||||||
|
::: $DIR/mismatched-types.rs:2:12
|
||||||
|
|
|
|
||||||
LL | let b: &[u8] = include_str!("file.txt");
|
LL | let b: &[u8] = include_str!("file.txt");
|
||||||
| ----- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `&[u8]`, found `&str`
|
| ----- ------------------------ in this macro invocation
|
||||||
| |
|
| |
|
||||||
| expected due to this
|
| expected due to this
|
||||||
|
|
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue