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<_>>()
|
.collect::<Vec<_>>()
|
||||||
.join("`, `");
|
.join("`, `");
|
||||||
|
|
||||||
// `Span` before impl block closing brace.
|
let sugg_sp = if let Ok(snippet) = tcx.sess.source_map().span_to_snippet(full_impl_span)
|
||||||
let hi = full_impl_span.hi() - BytePos(1);
|
&& snippet.ends_with("}")
|
||||||
// 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.
|
// `Span` before impl block closing brace.
|
||||||
let sugg_sp = full_impl_span.with_lo(hi).with_hi(hi);
|
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`.
|
// Obtain the level of indentation ending in `sugg_sp`.
|
||||||
let padding =
|
let padding =
|
||||||
tcx.sess.source_map().indentation_before(sugg_sp).unwrap_or_else(|| String::new());
|
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