Skip to content

Commit

Permalink
Account for multiple multiline spans with empty padding
Browse files Browse the repository at this point in the history
Instead of

```
LL |    fn oom(
   |  __^
   | | _|
   | ||
LL | || ) {
   | ||_-
LL | |  }
   | |__^
```

emit

```
LL | // fn oom(
LL | || ) {
   | ||_-
LL | |  }
   | |__^
   ```
  • Loading branch information
estebank committed Dec 27, 2022
1 parent caa64e5 commit 83c635c
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 33 deletions.
22 changes: 19 additions & 3 deletions compiler/rustc_errors/src/emitter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -845,18 +845,34 @@ impl EmitterWriter {
// 3 | |
// 4 | | }
// | |_^ test
if let [ann] = &line.annotations[..] {
let mut buffer_ops = vec![];
let mut annotations = vec![];
let mut short_start = true;
for ann in &line.annotations {
if let AnnotationType::MultilineStart(depth) = ann.annotation_type {
if source_string.chars().take(ann.start_col).all(|c| c.is_whitespace()) {
let style = if ann.is_primary {
Style::UnderlinePrimary
} else {
Style::UnderlineSecondary
};
buffer.putc(line_offset, width_offset + depth - 1, '/', style);
return vec![(depth, style)];
annotations.push((depth, style));
buffer_ops.push((line_offset, width_offset + depth - 1, '/', style));
} else {
short_start = false;
break;
}
} else if let AnnotationType::MultilineLine(_) = ann.annotation_type {
} else {
short_start = false;
break;
}
}
if short_start {
for (y, x, c, s) in buffer_ops {
buffer.putc(y, x, c, s);
}
return annotations;
}

// We want to display like this:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@ error[E0308]: mismatched types
|
LL | #[alloc_error_handler]
| ---------------------- in this procedural macro expansion
LL | fn oom(
| __^
| | _|
| ||
LL | // fn oom(
LL | || info: &Layout,
LL | || ) -> ()
| ||_______- arguments to this function are incorrect
Expand All @@ -29,10 +26,7 @@ error[E0308]: mismatched types
|
LL | #[alloc_error_handler]
| ---------------------- in this procedural macro expansion
LL | fn oom(
| __^
| | _|
| ||
LL | // fn oom(
LL | || info: &Layout,
LL | || ) -> ()
| ||_______^ expected `!`, found `()`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@ error[E0308]: mismatched types
|
LL | #[alloc_error_handler]
| ---------------------- in this procedural macro expansion
LL | fn oom(
| __^
| | _|
| ||
LL | // fn oom(
LL | || info: Layout,
LL | || ) {
| ||_- arguments to this function are incorrect
Expand Down Expand Up @@ -36,10 +33,7 @@ error[E0308]: mismatched types
|
LL | #[alloc_error_handler]
| ---------------------- in this procedural macro expansion
LL | fn oom(
| __^
| | _|
| ||
LL | // fn oom(
LL | || info: Layout,
LL | || ) {
| ||_^ expected `!`, found `()`
Expand Down
7 changes: 1 addition & 6 deletions src/test/ui/asm/x86_64/interpolated-idents.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,7 @@ error: asm outputs are not allowed with the `noreturn` option
LL | asm!("", $in(x) x, $out(x) x, $lateout(x) x, $inout(x) x, $inlateout(x) x,
| ^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^
...
LL | m!(in out lateout inout inlateout const sym
| _____-
| |_____|
| |_____|
| |_____|
| |
LL | / m!(in out lateout inout inlateout const sym
LL | | pure nomem readonly preserves_flags
LL | | noreturn nostack att_syntax options);
| | -
Expand Down
5 changes: 1 addition & 4 deletions src/test/ui/issues/issue-13497-2.stderr
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
error[E0515]: cannot return value referencing local variable `rawLines`
--> $DIR/issue-13497-2.rs:3:5
|
LL | rawLines
| ______^
| | _____|
| ||
LL | // rawLines
LL | || .iter().map(|l| l.trim()).collect()
| ||_______________-___________________________^ returns a value referencing data owned by the current function
| |_______________|
Expand Down
5 changes: 1 addition & 4 deletions src/test/ui/suggestions/issue-99240-2.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@ error[E0618]: expected function, found enum variant `Alias::Unit`
LL | Unit,
| ---- enum variant `Alias::Unit` defined here
...
LL | Alias::
| ______^
| | _____|
| ||
LL | // Alias::
LL | || Unit();
| ||________^_- call expression requires function
| |________|
Expand Down

0 comments on commit 83c635c

Please sign in to comment.