File tree Expand file tree Collapse file tree 3 files changed +56
-5
lines changed
compiler/rustc_hir_analysis/src/check Expand file tree Collapse file tree 3 files changed +56
-5
lines changed Original file line number Diff line number Diff line change @@ -211,11 +211,18 @@ fn missing_items_err(
211211 . collect :: < Vec < _ > > ( )
212212 . join ( "`, `" ) ;
213213
214- // `Span` before impl block closing brace.
215- let hi = full_impl_span. hi ( ) - BytePos ( 1 ) ;
216- // Point at the place right before the closing brace of the relevant `impl` to suggest
217- // adding the associated item at the end of its body.
218- let sugg_sp = full_impl_span. with_lo ( hi) . with_hi ( hi) ;
214+ let sugg_sp = if let Ok ( snippet) = tcx. sess . source_map ( ) . span_to_snippet ( full_impl_span)
215+ && snippet. ends_with ( "}" )
216+ {
217+ // `Span` before impl block closing brace.
218+ let hi = full_impl_span. hi ( ) - BytePos ( 1 ) ;
219+ // Point at the place right before the closing brace of the relevant `impl` to suggest
220+ // adding the associated item at the end of its body.
221+ full_impl_span. with_lo ( hi) . with_hi ( hi)
222+ } else {
223+ full_impl_span. shrink_to_hi ( )
224+ } ;
225+
219226 // Obtain the level of indentation ending in `sugg_sp`.
220227 let padding =
221228 tcx. sess . source_map ( ) . indentation_before ( sugg_sp) . unwrap_or_else ( || String :: new ( ) ) ;
Original file line number Diff line number Diff line change 1+ // issue#126764
2+
3+ struct S ;
4+
5+ trait T {
6+ fn f ( ) ;
7+ }
8+ impl T for S ;
9+ //~^ ERROR: unknown start of token
10+ //~| ERROR: expected `{}`
11+ //~| ERROR: not all trait items implemented, missing: `f`
12+
13+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ error: unknown start of token: \u{ff1b}
2+ --> $DIR/missing-impl-trait-block-but-not-ascii.rs:8:13
3+ |
4+ LL | impl T for S;
5+ | ^^
6+ |
7+ help: Unicode character ';' (Fullwidth Semicolon) looks like ';' (Semicolon), but it is not
8+ |
9+ LL | impl T for S;
10+ | ~
11+
12+ error: expected `{}`, found `;`
13+ --> $DIR/missing-impl-trait-block-but-not-ascii.rs:8:13
14+ |
15+ LL | impl T for S;
16+ | ^^
17+ |
18+ = help: try using `{}` instead
19+
20+ error[E0046]: not all trait items implemented, missing: `f`
21+ --> $DIR/missing-impl-trait-block-but-not-ascii.rs:8:1
22+ |
23+ LL | fn f();
24+ | ------- `f` from trait
25+ LL | }
26+ LL | impl T for S;
27+ | ^^^^^^^^^^^^ missing `f` in implementation
28+
29+ error: aborting due to 3 previous errors
30+
31+ For more information about this error, try `rustc --explain E0046`.
You can’t perform that action at this time.
0 commit comments