not use offset when there is not ends with brace
This commit is contained in:
parent
c3d7fb3985
commit
594fa01aba
@ -211,11 +211,18 @@ fn missing_items_err(
|
||||
.collect::<Vec<_>>()
|
||||
.join("`, `");
|
||||
|
||||
// `Span` before impl block closing brace.
|
||||
let hi = full_impl_span.hi() - BytePos(1);
|
||||
// Point at the place right before the closing brace of the relevant `impl` to suggest
|
||||
// adding the associated item at the end of its body.
|
||||
let sugg_sp = full_impl_span.with_lo(hi).with_hi(hi);
|
||||
let sugg_sp = if let Ok(snippet) = tcx.sess.source_map().span_to_snippet(full_impl_span)
|
||||
&& snippet.ends_with("}")
|
||||
{
|
||||
// `Span` before impl block closing brace.
|
||||
let hi = full_impl_span.hi() - BytePos(1);
|
||||
// Point at the place right before the closing brace of the relevant `impl` to suggest
|
||||
// adding the associated item at the end of its body.
|
||||
full_impl_span.with_lo(hi).with_hi(hi)
|
||||
} else {
|
||||
full_impl_span.shrink_to_hi()
|
||||
};
|
||||
|
||||
// Obtain the level of indentation ending in `sugg_sp`.
|
||||
let padding =
|
||||
tcx.sess.source_map().indentation_before(sugg_sp).unwrap_or_else(|| String::new());
|
||||
|
@ -0,0 +1,13 @@
|
||||
// issue#126764
|
||||
|
||||
struct S;
|
||||
|
||||
trait T {
|
||||
fn f();
|
||||
}
|
||||
impl T for S;
|
||||
//~^ ERROR: unknown start of token
|
||||
//~| ERROR: expected `{}`
|
||||
//~| ERROR: not all trait items implemented, missing: `f`
|
||||
|
||||
fn main() {}
|
@ -0,0 +1,31 @@
|
||||
error: unknown start of token: \u{ff1b}
|
||||
--> $DIR/missing-impl-trait-block-but-not-ascii.rs:8:13
|
||||
|
|
||||
LL | impl T for S;
|
||||
| ^^
|
||||
|
|
||||
help: Unicode character ';' (Fullwidth Semicolon) looks like ';' (Semicolon), but it is not
|
||||
|
|
||||
LL | impl T for S;
|
||||
| ~
|
||||
|
||||
error: expected `{}`, found `;`
|
||||
--> $DIR/missing-impl-trait-block-but-not-ascii.rs:8:13
|
||||
|
|
||||
LL | impl T for S;
|
||||
| ^^
|
||||
|
|
||||
= help: try using `{}` instead
|
||||
|
||||
error[E0046]: not all trait items implemented, missing: `f`
|
||||
--> $DIR/missing-impl-trait-block-but-not-ascii.rs:8:1
|
||||
|
|
||||
LL | fn f();
|
||||
| ------- `f` from trait
|
||||
LL | }
|
||||
LL | impl T for S;
|
||||
| ^^^^^^^^^^^^ missing `f` in implementation
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0046`.
|
Loading…
Reference in New Issue
Block a user