diff --git a/compiler/rustc_ast_passes/src/ast_validation.rs b/compiler/rustc_ast_passes/src/ast_validation.rs index f5e6b15fcbfd1..8ba6a914c4a4b 100644 --- a/compiler/rustc_ast_passes/src/ast_validation.rs +++ b/compiler/rustc_ast_passes/src/ast_validation.rs @@ -471,10 +471,17 @@ impl<'a> AstValidator<'a> { } fn error_item_without_body(&self, sp: Span, ctx: &str, msg: &str, sugg: &str) { + let source_map = self.session.source_map(); + let end = source_map.end_point(sp); + let replace_span = if source_map.span_to_snippet(end).map(|s| s == ";").unwrap_or(false) { + end + } else { + sp.shrink_to_hi() + }; self.err_handler() .struct_span_err(sp, msg) .span_suggestion( - self.session.source_map().end_point(sp), + replace_span, &format!("provide a definition for the {}", ctx), sugg.to_string(), Applicability::HasPlaceholders, diff --git a/src/test/ui/parser/issues/issue-87635.stderr b/src/test/ui/parser/issues/issue-87635.stderr index 0a52d0687b22b..1d459f1b907ed 100644 --- a/src/test/ui/parser/issues/issue-87635.stderr +++ b/src/test/ui/parser/issues/issue-87635.stderr @@ -13,9 +13,7 @@ error: associated function in `impl` without body --> $DIR/issue-87635.rs:4:5 | LL | pub fn bar() - | ^^^^^^^^^^^- - | | - | help: provide a definition for the function: `{ }` + | ^^^^^^^^^^^^- help: provide a definition for the function: `{ }` error: aborting due to 2 previous errors