PR 62170 describes a problem with how the quoting in pp_format
interacts with the "aka" information for typedefs in %qT for
the C family of frontends, and also now for %qH and %qI in the
C++ frontend: we print:
'Py_ssize_t* {aka int*}'
^^^^^^^^^^^^^^^^^^^^^^ colorized as "quote"
i.e.
'[START_COLOR]Py_ssize_t* {aka int*}[END_COLOR]'
when we should print:
'Py_ssize_t*' {aka 'int*'}
^^^^^^^^^^^ ^^^^ colorized as "quote"
i.e.
'[START_COLOR]Py_ssize_t*[END_COLOR]' {aka '[START_COLOR]int*[END_COLOR]'}
where the opening and closing quote characters and colorization are
added by the 'q' handling within pp_format.
This patch fixes the quoting by updating the %T handling in C and C++
and the %H/%I handling in C++ to insert the quoting appropriately.
It converts the "quote" param of the pp_format_decoder callback from
bool to bool *, allowing for the %T and %H/%I handlers to write
false back to it, to avoid printing the closing quote for the cases
like the above where the trailing closing quote isn't needed.
It introduces pp_begin_quote/pp_end_quote to simplify this. These
take a "bool show_color", rather than using "pp_show_color (pp)"
since cxx_pp's pp_show_color isn't currently initialized (since
cxx_initialize_diagnostics happens before diagnostic_color_init).
gcc/c/ChangeLog:
PR c++/62170
* c-objc-common.c (c_tree_printer): Convert penultimate param from
bool to bool *. Within '%T' handling, if showing an "aka", use
"quoted" param to add appropriate quoting.
gcc/cp/ChangeLog:
PR c++/62170
* error.c (type_to_string): Add leading comment. Add params
"postprocessed", "quote", and "show_color", using them to fix
quoting of the "aka" for types involving typedefs.
(arg_to_string): Update for new params to type_to_string.
(cxx_format_postprocessor::handle): Likewise.
(cp_printer): Convert penultimate param from bool to bool *.
Update call to type_to_string and calls to
defer_phase_2_of_type_diff.
gcc/fortran/ChangeLog:
PR c++/62170
* error.c (gfc_notify_std): Convert "quoted" param from bool to
bool *.
gcc/ChangeLog:
PR c++/62170
* pretty-print.c (pp_format): Move quoting implementation to
pp_begin_quote and pp_end_quote. Update pp_format_decoder call
to pass address of "quote" local.
(pp_begin_quote): New function.
(pp_end_quote): New function.
* pretty-print.h (printer_fn): Convert penultimate param from bool
to bool *.
(pp_begin_quote): New decl.
(pp_end_quote): New decl.
* tree-diagnostic.c (default_tree_printer): Convert penultimate
param from bool to bool *.
* tree-diagnostic.h (default_tree_printer): Likewise.
gcc/testsuite/ChangeLog:
PR c++/62170
* g++.dg/diagnostic/aka1.C: Update expected error messages to
reflect fixes to quoting.
* g++.dg/diagnostic/aka2.C: New test case.
* g++.dg/parse/error55.C: Update expected error messages to
reflect fixes to quoting.
* gcc.dg/diag-aka-1.c: Likewise.
* gcc.dg/diag-aka-2.c: New test case.
* gcc.dg/pr13804-1.c: Update expected error messages to reflect
fixes to quoting.
* gcc.dg/pr56980.c: Likewise.
* gcc.dg/pr65050.c: Likewise.
* gcc.dg/redecl-14.c: Likewise.
* gcc.dg/utf16-4.c Likewise.
* gcc.target/i386/sse-vect-types.c (__m128d): Likewise.
* obj-c++.dg/invalid-type-1.mm: Likewise.
* objc.dg/proto-lossage-4.m: Likewise.
From-SVN: r255076
| 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... |