On 10/11/2017 01:32 PM, David Malcolm wrote: > [This patch assumes the two patches here: > https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00274.html ] I see the patch directly referenced in that message on the trunk. But I'm not sure what you mean by "two patches". If there's a prereq that hasn't been approved, let me know.
> > c_parser_declaration_or_fndef has logic for parsing what might be > either a declaration or a function definition. > > This patch adds a test to detect cases where a semicolon would have > terminated the decls as a declaration, where the token that follows > would start a new declaration specifier, and updates the error message > accordingly, with a fix-it hint. > > This addresses PR c/7356, fixing the case of a stray token before a > #include which previously gave inscrutable output, and improving e.g.: > > int i > int j; > > from: > > t.c:2:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before > 'int' > int j; > ^~~ > > to: > > t.c:1:6: error: expected ';' before 'int' > int i > ^ > ; > int j; > ~~~ > > The patch also adds a test for PR c/44515 as a baseline. Personally I find the current error easier to digest. It quite clearly tells me to look before the current token and shove in an appropriate thingie :-) The extra vertical space, to me, makes the error message harder to parse. But I can see how others would prefer to see the point where the punctuation was missing. So I won't let my biases get in the way here. > > gcc/c/ChangeLog: > PR c/7356 > * c-parser.c (c_parser_declaration_or_fndef): Detect missing > semicolons. > > gcc/testsuite/ChangeLog: > PR c/7356 > PR c/44515 > * c-c++-common/pr44515.c: New test case. > * gcc.dg/pr7356-2.c: New test case. > * gcc.dg/pr7356.c: New test case. > * gcc.dg/spellcheck-typenames.c: Update the "singed" char "TODO" > case to reflect changes to output. > * gcc.dg/noncompile/920923-1.c: Add dg-warning to reflect changes > to output. OK. jeff