https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84887
Bug ID: 84887 Summary: missing semicolon: further improvements Product: gcc Version: 8.0 Status: UNCONFIRMED Keywords: diagnostic, error-recovery Severity: normal Priority: P3 Component: c Assignee: dmalcolm at gcc dot gnu.org Reporter: dmalcolm at gcc dot gnu.org Target Milestone: --- Consider: int test(void) { return 42 } Prior to gcc 8 we emitted: t.c: In function ‘test’: t.c:4:1: error: expected ‘;’ before ‘}’ token } ^ As of gcc 8 we now emit the error at the correct location: t.c: In function ‘test’: t.c:3:12: error: expected ‘;’ before ‘}’ token return 42 ^ ; } ~ (this was PR 65137 and others) However, as suggested e.g. by oridb on Reddit, it would be more readable to talk about the previous logical unit, and emit: t.c: In function ‘test’: t.c:3:12: error: expected ‘;’ after ‘42’ token return 42 ^ ; or somesuch: e.g. should we highlight the preceding token as a secondary range, which would give: t.c: In function ‘test’: t.c:3:12: error: expected ‘;’ after ‘42’ token return 42 ~~^ ; (I'm not sure either way)