The patch improves our C/C++ frontends' handling of missing symbols, by making c_parser_require and cp_parser_require use "better" locations for the diagnostic, and insert fix-it hints, under certain circumstances (see the comments in the patch for full details). For example, for this code with a missing semicolon: $ cat test.c int missing_semicolon (void) { return 42 } trunk currently emits: test.c:4:1: error: expected ';' before '}' token } ^ This patch adds a fix-it hint for the missing semicolon, and puts the error at the location of the missing semicolon, printing the followup token as a secondary location: test.c:3:12: error: expected ';' before '}' token return 42 ^ ; } ~ More examples can be seen in the test cases. gcc/c-family/ChangeLog: * c-common.c (enum missing_token_insertion_kind): New enum. (get_missing_token_insertion_kind): New function. (maybe_suggest_missing_token_insertion): New function. * c-common.h (maybe_suggest_missing_token_insertion): New decl. gcc/c/ChangeLog: * c-parser.c (c_parser_require): Add "type_is_unique" param and use it to guard calls to maybe_suggest_missing_token_insertion. (c_parser_parms_list_declarator): Override default value of new "type_is_unique" param to c_parser_require. (c_parser_asm_statement): Likewise. * c-parser.h (c_parser_require): Add "type_is_unique" param, defaulting to true. gcc/cp/ChangeLog: * parser.c (get_required_cpp_ttype): New function. (cp_parser_error_1): Call it, using the result to call maybe_suggest_missing_token_insertion. gcc/testsuite/ChangeLog: * c-c++-common/cilk-plus/AN/parser_errors.c: Update expected output to reflect changes to reported locations of missing symbols. * c-c++-common/cilk-plus/AN/parser_errors2.c: Likewise. * c-c++-common/cilk-plus/AN/parser_errors3.c: Likewise. * c-c++-common/cilk-plus/AN/pr61191.c: Likewise. * c-c++-common/gomp/pr63326.c: Likewise. * c-c++-common/missing-close-symbol.c: Likewise, also update for new fix-it hints. * c-c++-common/missing-symbol.c: Likewise, also add test coverage for missing colon in ternary operator. * g++.dg/cpp1y/digit-sep-neg.C: Likewise. * g++.dg/cpp1y/pr65202.C: Likewise. * g++.dg/missing-symbol-2.C: New test case. * g++.dg/other/do1.C: Update expected output to reflect changes to reported locations of missing symbols. * g++.dg/parse/error11.C: Likewise. * g++.dg/template/error11.C: Likewise. * gcc.dg/missing-symbol-2.c: New test case. * gcc.dg/missing-symbol-3.c: New test case. * gcc.dg/noncompile/940112-1.c: Update expected output to reflect changes to reported locations of missing symbols. * gcc.dg/noncompile/971104-1.c: Likewise. * obj-c++.dg/exceptions-6.mm: Likewise. * obj-c++.dg/pr48187.mm: Likewise. * objc.dg/exceptions-6.m: Likewise. From-SVN: r253690
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
attributes | Loading commit data... | |
lto | Loading commit data... | |
plugin | Loading commit data... | |
property | Loading commit data... | |
strings | Loading commit data... | |
tls | Loading commit data... | |
torture | Loading commit data... | |
Wimplicit-fallthrough-1.mm | Loading commit data... | |
at-class-1.mm | Loading commit data... | |
bad-forward-decl.mm | Loading commit data... | |
bad-receiver-type.mm | Loading commit data... | |
basic.mm | Loading commit data... | |
bitfield-1.mm | Loading commit data... | |
bitfield-2.mm | Loading commit data... | |
bitfield-3.mm | Loading commit data... | |
bitfield-4.mm | Loading commit data... | |
bitfield-5.mm | Loading commit data... | |
class-extension-1.mm | Loading commit data... | |
class-extension-2.mm | Loading commit data... | |
class-extension-3.mm | Loading commit data... | |
class-extension-4.mm | Loading commit data... | |
class-protocol-1.mm | Loading commit data... | |
comp-types-1.mm | Loading commit data... | |
comp-types-10.mm | Loading commit data... | |
comp-types-11.mm | Loading commit data... | |
comp-types-12.mm | Loading commit data... | |
comp-types-13.mm | Loading commit data... | |
comp-types-2.mm | Loading commit data... | |
comp-types-3.mm | Loading commit data... | |
comp-types-4.mm | Loading commit data... | |
comp-types-5.mm | Loading commit data... | |
comp-types-6.mm | Loading commit data... | |
comp-types-7.mm | Loading commit data... | |
comp-types-8.mm | Loading commit data... | |
comp-types-9.mm | Loading commit data... | |
cxx-class-1.mm | Loading commit data... | |
cxx-ivars-1.mm | Loading commit data... | |
cxx-ivars-2.mm | Loading commit data... | |
cxx-ivars-3.mm | Loading commit data... | |
cxx-scope-1.mm | Loading commit data... | |
cxx-scope-2.mm | Loading commit data... | |
defs.mm | Loading commit data... | |
demangle-1.mm | Loading commit data... | |
demangle-2.mm | Loading commit data... | |
demangle-3.mm | Loading commit data... | |
dg.exp | Loading commit data... | |
duplicate-class-1.mm | Loading commit data... | |
dwarf-2.mm | Loading commit data... | |
empty-private-1.mm | Loading commit data... | |
encode-1-next.mm | Loading commit data... | |
encode-1.mm | Loading commit data... | |
encode-10.mm | Loading commit data... | |
encode-2.mm | Loading commit data... | |
encode-3.mm | Loading commit data... | |
encode-4.mm | Loading commit data... | |
encode-5.mm | Loading commit data... | |
encode-6.mm | Loading commit data... | |
encode-7.mm | Loading commit data... | |
encode-8.mm | Loading commit data... | |
encode-9.mm | Loading commit data... | |
enhanced-proto-1.mm | Loading commit data... | |
enhanced-proto-2.mm | Loading commit data... | |
except-1.mm | Loading commit data... | |
exceptions-1.mm | Loading commit data... | |
exceptions-2.mm | Loading commit data... | |
exceptions-3.mm | Loading commit data... | |
exceptions-4.mm | Loading commit data... | |
exceptions-5.mm | Loading commit data... | |
exceptions-6.mm | Loading commit data... | |
exceptions-7.mm | Loading commit data... | |
extern-c-1.mm | Loading commit data... | |
extra-semi.mm | Loading commit data... | |
fix-and-continue-2.mm | Loading commit data... | |
fobjc-exceptions-1.mm | Loading commit data... | |
fobjc-exceptions-2.mm | Loading commit data... | |
fobjc-exceptions-3.mm | Loading commit data... | |
fobjc-std-1.mm | Loading commit data... | |
fsf-nsstring-format-1.mm | Loading commit data... | |
fsf-package-0.m | Loading commit data... | |
gnu-api-2-class-meta.mm | Loading commit data... | |
gnu-api-2-class.mm | Loading commit data... | |
gnu-api-2-ivar.mm | Loading commit data... | |
gnu-api-2-method.mm | Loading commit data... | |
gnu-api-2-objc.mm | Loading commit data... | |
gnu-api-2-objc_msg_lookup.mm | Loading commit data... | |
gnu-api-2-object.mm | Loading commit data... | |
gnu-api-2-property.mm | Loading commit data... | |
gnu-api-2-protocol.mm | Loading commit data... | |
gnu-api-2-resolve-method.mm | Loading commit data... | |
gnu-api-2-sel.mm | Loading commit data... | |
gnu-runtime-1.mm | Loading commit data... | |
gnu-runtime-2.mm | Loading commit data... | |
gnu-runtime-3.mm | Loading commit data... | |
invalid-method-2.mm | Loading commit data... | |
invalid-type-1.mm | Loading commit data... | |
isa-field-1.mm | Loading commit data... | |
ivar-invalid-type-1.mm | Loading commit data... | |
ivar-list-semi.mm | Loading commit data... | |
ivar-problem-1.mm | Loading commit data... | |
keywords-1.mm | Loading commit data... | |
keywords-2.mm | Loading commit data... | |
lambda-0.mm | Loading commit data... | |
lambda-1.mm | Loading commit data... | |
layout-1.mm | Loading commit data... | |
local-decl-1.mm | Loading commit data... | |
lookup-1.mm | Loading commit data... | |
lookup-2.mm | Loading commit data... | |
method-1.mm | Loading commit data... | |
method-10.mm | Loading commit data... | |
method-11.mm | Loading commit data... | |
method-12.mm | Loading commit data... | |
method-13.mm | Loading commit data... | |
method-14.mm | Loading commit data... | |
method-15.mm | Loading commit data... | |
method-16.mm | Loading commit data... | |
method-17.mm | Loading commit data... | |
method-18.mm | Loading commit data... | |
method-19.mm | Loading commit data... | |
method-2.mm | Loading commit data... | |
method-20.mm | Loading commit data... | |
method-21.mm | Loading commit data... | |
method-22.mm | Loading commit data... | |
method-23.mm | Loading commit data... | |
method-3.mm | Loading commit data... | |
method-4.mm | Loading commit data... | |
method-5.mm | Loading commit data... | |
method-6.mm | Loading commit data... | |
method-7.mm | Loading commit data... | |
method-8.mm | Loading commit data... | |
method-9.mm | Loading commit data... | |
method-conflict-1.mm | Loading commit data... | |
method-conflict-2.mm | Loading commit data... | |
method-conflict-3.mm | Loading commit data... | |
method-conflict-4.mm | Loading commit data... | |
method-lookup-1.mm | Loading commit data... | |
method-namespace-1.mm | Loading commit data... | |
method-namespace-2.mm | Loading commit data... | |
msg-in-protocol.mm | Loading commit data... | |
naming-1.mm | Loading commit data... | |
naming-2.mm | Loading commit data... | |
naming-3.mm | Loading commit data... | |
naming-4.mm | Loading commit data... | |
no-extra-load.mm | Loading commit data... | |
objc-gc-3.mm | Loading commit data... | |
overload-1.mm | Loading commit data... | |
pr23709.mm | Loading commit data... | |
pr24393.mm | Loading commit data... | |
pr28049.mm | Loading commit data... | |
pr45735.mm | Loading commit data... | |
pr48187.mm | Loading commit data... | |
pragma-1.mm | Loading commit data... | |
pragma-2.mm | Loading commit data... | |
private-1.mm | Loading commit data... | |
private-2.mm | Loading commit data... | |
proto-error-1.mm | Loading commit data... | |
proto-init-mimatch-1.mm | Loading commit data... | |
proto-lossage-1.mm | Loading commit data... | |
proto-lossage-2.mm | Loading commit data... | |
proto-lossage-3.mm | Loading commit data... | |
proto-lossage-4.mm | Loading commit data... | |
proto-lossage-5.mm | Loading commit data... | |
proto-lossage-6.mm | Loading commit data... | |
proto-lossage-7.mm | Loading commit data... | |
proto-qual-1.mm | Loading commit data... | |
protocol-forward-1.mm | Loading commit data... | |
protocol-forward-2.mm | Loading commit data... | |
protocol-inheritance-1.mm | Loading commit data... | |
protocol-inheritance-2.mm | Loading commit data... | |
protocol-optional-1.mm | Loading commit data... | |
protocol-qualifier-1.mm | Loading commit data... | |
protocol-qualifier-2.mm | Loading commit data... | |
qual-types-1.mm | Loading commit data... | |
selector-1.mm | Loading commit data... | |
selector-2.mm | Loading commit data... | |
selector-3.mm | Loading commit data... | |
selector-4.mm | Loading commit data... | |
selector-5.mm | Loading commit data... | |
selector-6.mm | Loading commit data... | |
selector-warn-1.mm | Loading commit data... | |
set-not-used-1.mm | Loading commit data... | |
standard-headers.mm | Loading commit data... | |
stubify-1.mm | Loading commit data... | |
stubify-2.mm | Loading commit data... | |
super-class-1.mm | Loading commit data... | |
super-class-2.mm | Loading commit data... | |
super-dealloc-1.mm | Loading commit data... | |
super-dealloc-2.mm | Loading commit data... | |
sync-2.mm | Loading commit data... | |
sync-3.mm | Loading commit data... | |
syntax-error-1.mm | Loading commit data... | |
syntax-error-10.mm | Loading commit data... | |
syntax-error-2.mm | Loading commit data... | |
syntax-error-3.mm | Loading commit data... | |
syntax-error-4.mm | Loading commit data... | |
syntax-error-5.mm | Loading commit data... | |
syntax-error-6.mm | Loading commit data... | |
syntax-error-7.mm | Loading commit data... | |
syntax-error-8.mm | Loading commit data... | |
syntax-error-9.mm | Loading commit data... | |
template-1.mm | Loading commit data... | |
template-2.mm | Loading commit data... | |
template-3.mm | Loading commit data... | |
template-4.mm | Loading commit data... | |
template-5.mm | Loading commit data... | |
template-6.mm | Loading commit data... | |
template-7.mm | Loading commit data... | |
template-8.mm | Loading commit data... | |
threedotthree-abi-1.mm | Loading commit data... | |
too-many-args.mm | Loading commit data... | |
try-catch-1.mm | Loading commit data... | |
try-catch-10.mm | Loading commit data... | |
try-catch-11.mm | Loading commit data... | |
try-catch-12.mm | Loading commit data... | |
try-catch-13.mm | Loading commit data... | |
try-catch-14.mm | Loading commit data... | |
try-catch-15.mm | Loading commit data... | |
try-catch-16.mm | Loading commit data... | |
try-catch-17.mm | Loading commit data... | |
try-catch-2.mm | Loading commit data... | |
try-catch-3.mm | Loading commit data... | |
try-catch-4.mm | Loading commit data... | |
try-catch-5.mm | Loading commit data... | |
try-catch-6.mm | Loading commit data... | |
try-catch-7.mm | Loading commit data... | |
try-catch-8.mm | Loading commit data... | |
try-catch-9.mm | Loading commit data... | |
typedef-alias-1.mm | Loading commit data... | |
va-meth-1.mm | Loading commit data... | |
warn5.mm | Loading commit data... | |
warn6.mm | Loading commit data... | |
warn7.mm | Loading commit data... |