Skip to content

Commit

Permalink
diagnostics: do not suggest fn foo({ <body> }
Browse files Browse the repository at this point in the history
Instead of suggesting that the body always replace the last character on the
line, presuming it must be a semicolon, the parser should instead check what
the last character is, and append the body if it is anything else.

Fixes rust-lang#83104
  • Loading branch information
notriddle committed Mar 22, 2022
1 parent 64137f0 commit 3729b17
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
9 changes: 8 additions & 1 deletion compiler/rustc_ast_passes/src/ast_validation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
4 changes: 1 addition & 3 deletions src/test/ui/parser/issues/issue-87635.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -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: `{ <body> }`
| ^^^^^^^^^^^^- help: provide a definition for the function: `{ <body> }`

error: aborting due to 2 previous errors

0 comments on commit 3729b17

Please sign in to comment.