Rollup merge of #94788 - estebank:removal-suggestion, r=petrochenkov
Account for suggestions for complete removal of lines Fix #94192.
This commit is contained in:
commit
6bbaca7d03
|
@ -1657,6 +1657,31 @@ impl EmitterWriter {
|
|||
let line_start = sm.lookup_char_pos(parts[0].span.lo()).line;
|
||||
draw_col_separator_no_space(&mut buffer, 1, max_line_num_len + 1);
|
||||
let mut lines = complete.lines();
|
||||
if lines.clone().next().is_none() {
|
||||
// Account for a suggestion to completely remove a line(s) with whitespace (#94192).
|
||||
let line_end = sm.lookup_char_pos(parts[0].span.hi()).line;
|
||||
for line in line_start..=line_end {
|
||||
buffer.puts(
|
||||
row_num - 1 + line - line_start,
|
||||
0,
|
||||
&self.maybe_anonymized(line),
|
||||
Style::LineNumber,
|
||||
);
|
||||
buffer.puts(
|
||||
row_num - 1 + line - line_start,
|
||||
max_line_num_len + 1,
|
||||
"- ",
|
||||
Style::Removal,
|
||||
);
|
||||
buffer.puts(
|
||||
row_num - 1 + line - line_start,
|
||||
max_line_num_len + 3,
|
||||
&normalize_whitespace(&*file_lines.file.get_line(line - 1).unwrap()),
|
||||
Style::Removal,
|
||||
);
|
||||
}
|
||||
row_num += line_end - line_start;
|
||||
}
|
||||
for (line_pos, (line, highlight_parts)) in
|
||||
lines.by_ref().zip(highlights).take(MAX_SUGGESTION_HIGHLIGHT_LINES).enumerate()
|
||||
{
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
struct Wrapper<T>(T);
|
||||
|
||||
fn foo<T>(foo: Wrapper<T>)
|
||||
//~^ ERROR the size for values of type `T` cannot be known at compilation time
|
||||
where
|
||||
T
|
||||
:
|
||||
?
|
||||
Sized
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
fn bar<T>(foo: Wrapper<T>)
|
||||
//~^ ERROR the size for values of type `T` cannot be known at compilation time
|
||||
where T: ?Sized
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
fn qux<T>(foo: Wrapper<T>)
|
||||
//~^ ERROR the size for values of type `T` cannot be known at compilation time
|
||||
where
|
||||
T: ?Sized
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
|
||||
fn main() {}
|
|
@ -0,0 +1,83 @@
|
|||
error[E0277]: the size for values of type `T` cannot be known at compilation time
|
||||
--> $DIR/removal-of-multiline-trait-bound-in-where-clause.rs:3:16
|
||||
|
|
||||
LL | fn foo<T>(foo: Wrapper<T>)
|
||||
| - ^^^^^^^^^^ doesn't have a size known at compile-time
|
||||
| |
|
||||
| this type parameter needs to be `std::marker::Sized`
|
||||
|
|
||||
note: required by a bound in `Wrapper`
|
||||
--> $DIR/removal-of-multiline-trait-bound-in-where-clause.rs:1:16
|
||||
|
|
||||
LL | struct Wrapper<T>(T);
|
||||
| ^ required by this bound in `Wrapper`
|
||||
help: you could relax the implicit `Sized` bound on `T` if it were used through indirection like `&T` or `Box<T>`
|
||||
--> $DIR/removal-of-multiline-trait-bound-in-where-clause.rs:1:16
|
||||
|
|
||||
LL | struct Wrapper<T>(T);
|
||||
| ^ - ...if indirection were used here: `Box<T>`
|
||||
| |
|
||||
| this could be changed to `T: ?Sized`...
|
||||
help: consider removing the `?Sized` bound to make the type parameter `Sized`
|
||||
|
|
||||
LL - where
|
||||
LL - T
|
||||
LL - :
|
||||
LL - ?
|
||||
LL - Sized
|
||||
|
|
||||
|
||||
error[E0277]: the size for values of type `T` cannot be known at compilation time
|
||||
--> $DIR/removal-of-multiline-trait-bound-in-where-clause.rs:14:16
|
||||
|
|
||||
LL | fn bar<T>(foo: Wrapper<T>)
|
||||
| - ^^^^^^^^^^ doesn't have a size known at compile-time
|
||||
| |
|
||||
| this type parameter needs to be `std::marker::Sized`
|
||||
|
|
||||
note: required by a bound in `Wrapper`
|
||||
--> $DIR/removal-of-multiline-trait-bound-in-where-clause.rs:1:16
|
||||
|
|
||||
LL | struct Wrapper<T>(T);
|
||||
| ^ required by this bound in `Wrapper`
|
||||
help: you could relax the implicit `Sized` bound on `T` if it were used through indirection like `&T` or `Box<T>`
|
||||
--> $DIR/removal-of-multiline-trait-bound-in-where-clause.rs:1:16
|
||||
|
|
||||
LL | struct Wrapper<T>(T);
|
||||
| ^ - ...if indirection were used here: `Box<T>`
|
||||
| |
|
||||
| this could be changed to `T: ?Sized`...
|
||||
help: consider removing the `?Sized` bound to make the type parameter `Sized`
|
||||
|
|
||||
LL - where T: ?Sized
|
||||
|
|
||||
|
||||
error[E0277]: the size for values of type `T` cannot be known at compilation time
|
||||
--> $DIR/removal-of-multiline-trait-bound-in-where-clause.rs:21:16
|
||||
|
|
||||
LL | fn qux<T>(foo: Wrapper<T>)
|
||||
| - ^^^^^^^^^^ doesn't have a size known at compile-time
|
||||
| |
|
||||
| this type parameter needs to be `std::marker::Sized`
|
||||
|
|
||||
note: required by a bound in `Wrapper`
|
||||
--> $DIR/removal-of-multiline-trait-bound-in-where-clause.rs:1:16
|
||||
|
|
||||
LL | struct Wrapper<T>(T);
|
||||
| ^ required by this bound in `Wrapper`
|
||||
help: you could relax the implicit `Sized` bound on `T` if it were used through indirection like `&T` or `Box<T>`
|
||||
--> $DIR/removal-of-multiline-trait-bound-in-where-clause.rs:1:16
|
||||
|
|
||||
LL | struct Wrapper<T>(T);
|
||||
| ^ - ...if indirection were used here: `Box<T>`
|
||||
| |
|
||||
| this could be changed to `T: ?Sized`...
|
||||
help: consider removing the `?Sized` bound to make the type parameter `Sized`
|
||||
|
|
||||
LL - where
|
||||
LL - T: ?Sized
|
||||
|
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
Loading…
Reference in a new issue