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... | |
| gnu-encoding | Loading commit data... | |
| lto | Loading commit data... | |
| pch | Loading commit data... | |
| plugin | Loading commit data... | |
| property | Loading commit data... | |
| special | Loading commit data... | |
| strings | Loading commit data... | |
| tls | Loading commit data... | |
| torture | Loading commit data... | |
| Wimplicit-fallthrough-1.m | Loading commit data... | |
| alias.m | Loading commit data... | |
| anon-1.m | Loading commit data... | |
| at-class-1.m | Loading commit data... | |
| bad-receiver-type-2.m | Loading commit data... | |
| bad-receiver-type.m | Loading commit data... | |
| bitfield-1.m | Loading commit data... | |
| bitfield-2.m | Loading commit data... | |
| bitfield-3.m | Loading commit data... | |
| bitfield-4.m | Loading commit data... | |
| bitfield-5.m | Loading commit data... | |
| break-in-ifstmt.m | Loading commit data... | |
| call-super-1.m | Loading commit data... | |
| call-super-2.m | Loading commit data... | |
| call-super-3.m | Loading commit data... | |
| category-1.m | Loading commit data... | |
| class-1.m | Loading commit data... | |
| class-2.m | Loading commit data... | |
| class-extension-1.m | Loading commit data... | |
| class-extension-2.m | Loading commit data... | |
| class-extension-3.m | Loading commit data... | |
| class-extension-4.m | Loading commit data... | |
| class-protocol-1.m | Loading commit data... | |
| comp-types-1.m | Loading commit data... | |
| comp-types-10.m | Loading commit data... | |
| comp-types-11.m | Loading commit data... | |
| comp-types-12.m | Loading commit data... | |
| comp-types-2.m | Loading commit data... | |
| comp-types-3.m | Loading commit data... | |
| comp-types-4.m | Loading commit data... | |
| comp-types-5.m | Loading commit data... | |
| comp-types-6.m | Loading commit data... | |
| comp-types-7.m | Loading commit data... | |
| comp-types-8.m | Loading commit data... | |
| comp-types-9.m | Loading commit data... | |
| conditional-1.m | Loading commit data... | |
| defs.m | Loading commit data... | |
| demangle-1.m | Loading commit data... | |
| desig-init-1.m | Loading commit data... | |
| desig-init-2.m | Loading commit data... | |
| dg.exp | Loading commit data... | |
| duplicate-class-1.m | Loading commit data... | |
| dwarf-1.m | Loading commit data... | |
| dwarf-2.m | Loading commit data... | |
| encode-1.m | Loading commit data... | |
| encode-10.m | Loading commit data... | |
| encode-11.m | Loading commit data... | |
| encode-2.m | Loading commit data... | |
| encode-3.m | Loading commit data... | |
| encode-4.m | Loading commit data... | |
| encode-5.m | Loading commit data... | |
| encode-6-next.m | Loading commit data... | |
| encode-6.m | Loading commit data... | |
| encode-7-next-64bit.m | Loading commit data... | |
| encode-7-next.m | Loading commit data... | |
| encode-7.m | Loading commit data... | |
| encode-8.m | Loading commit data... | |
| encode-9.m | Loading commit data... | |
| enhanced-proto-1.m | Loading commit data... | |
| enhanced-proto-2.m | Loading commit data... | |
| error-1.m | Loading commit data... | |
| exceptions-1.m | Loading commit data... | |
| exceptions-2.m | Loading commit data... | |
| exceptions-3.m | Loading commit data... | |
| exceptions-4.m | Loading commit data... | |
| exceptions-5.m | Loading commit data... | |
| exceptions-6.m | Loading commit data... | |
| exceptions-7.m | Loading commit data... | |
| extra-semi.m | Loading commit data... | |
| fix-and-continue-1.m | Loading commit data... | |
| fix-and-continue-2.m | Loading commit data... | |
| fobjc-exceptions-1.m | Loading commit data... | |
| fobjc-exceptions-2.m | Loading commit data... | |
| fobjc-exceptions-3.m | Loading commit data... | |
| fobjc-std-1.m | Loading commit data... | |
| foreach-1.m | Loading commit data... | |
| foreach-2.m | Loading commit data... | |
| foreach-3.m | Loading commit data... | |
| foreach-4.m | Loading commit data... | |
| foreach-5.m | Loading commit data... | |
| foreach-6.m | Loading commit data... | |
| foreach-7.m | Loading commit data... | |
| foreach-8.m | Loading commit data... | |
| fsf-nsstring-format-1.m | Loading commit data... | |
| fsf-package-0.m | Loading commit data... | |
| fsyntax-only.m | Loading commit data... | |
| func-ptr-1.m | Loading commit data... | |
| func-ptr-2.m | Loading commit data... | |
| fwd-proto-1.m | Loading commit data... | |
| gnu-api-2-class-meta.m | Loading commit data... | |
| gnu-api-2-class.m | Loading commit data... | |
| gnu-api-2-ivar.m | Loading commit data... | |
| gnu-api-2-method.m | Loading commit data... | |
| gnu-api-2-objc.m | Loading commit data... | |
| gnu-api-2-objc_msg_lookup.m | Loading commit data... | |
| gnu-api-2-object.m | Loading commit data... | |
| gnu-api-2-property.m | Loading commit data... | |
| gnu-api-2-protocol.m | Loading commit data... | |
| gnu-api-2-resolve-method.m | Loading commit data... | |
| gnu-api-2-sel.m | Loading commit data... | |
| gnu-runtime-1.m | Loading commit data... | |
| gnu-runtime-2.m | Loading commit data... | |
| gnu-runtime-3.m | Loading commit data... | |
| headers.m | Loading commit data... | |
| id-1.m | Loading commit data... | |
| image-info.m | Loading commit data... | |
| incomplete-type-1.m | Loading commit data... | |
| invalid-method-1.m | Loading commit data... | |
| invalid-method-2.m | Loading commit data... | |
| invalid-type-1.m | Loading commit data... | |
| isa-field-1.m | Loading commit data... | |
| ivar-extra-semicolon.m | Loading commit data... | |
| ivar-invalid-type-1.m | Loading commit data... | |
| ivar-problem-1.m | Loading commit data... | |
| ivar-scope-1.m | Loading commit data... | |
| ivar-scope-2.m | Loading commit data... | |
| ivar-scope-3.m | Loading commit data... | |
| ivar-scope-4.m | Loading commit data... | |
| ivar-visibility-1.m | Loading commit data... | |
| ivar-visibility-2.m | Loading commit data... | |
| ivar-visibility-3.m | Loading commit data... | |
| ivar-visibility-4.m | Loading commit data... | |
| keywords-1.m | Loading commit data... | |
| keywords-2.m | Loading commit data... | |
| keywords-3.m | Loading commit data... | |
| layout-1.m | Loading commit data... | |
| layout-2.m | Loading commit data... | |
| libobjc-selector-1.m | Loading commit data... | |
| local-decl-1.m | Loading commit data... | |
| local-decl-2.m | Loading commit data... | |
| lookup-1.m | Loading commit data... | |
| member-1.m | Loading commit data... | |
| method-1.m | Loading commit data... | |
| method-10.m | Loading commit data... | |
| method-11.m | Loading commit data... | |
| method-12.m | Loading commit data... | |
| method-13.m | Loading commit data... | |
| method-14.m | Loading commit data... | |
| method-15.m | Loading commit data... | |
| method-16.m | Loading commit data... | |
| method-17.m | Loading commit data... | |
| method-18.m | Loading commit data... | |
| method-19.m | Loading commit data... | |
| method-2.m | Loading commit data... | |
| method-20.m | Loading commit data... | |
| method-20b.m | Loading commit data... | |
| method-3.m | Loading commit data... | |
| method-4.m | Loading commit data... | |
| method-5.m | Loading commit data... | |
| method-6.m | Loading commit data... | |
| method-7.m | Loading commit data... | |
| method-8.m | Loading commit data... | |
| method-9.m | Loading commit data... | |
| method-conflict-1.m | Loading commit data... | |
| method-conflict-2.m | Loading commit data... | |
| method-conflict-3.m | Loading commit data... | |
| method-conflict-4.m | Loading commit data... | |
| method-lookup-1.m | Loading commit data... | |
| missing-proto-1.m | Loading commit data... | |
| missing-proto-2.m | Loading commit data... | |
| missing-proto-3.m | Loading commit data... | |
| msg-in-protocol.m | Loading commit data... | |
| naming-1.m | Loading commit data... | |
| naming-2.m | Loading commit data... | |
| naming-3.m | Loading commit data... | |
| naming-4.m | Loading commit data... | |
| naming-5.m | Loading commit data... | |
| naming-6.m | Loading commit data... | |
| naming-7.m | Loading commit data... | |
| next-runtime-1.m | Loading commit data... | |
| no-extra-load.m | Loading commit data... | |
| objc-fast-4.m | Loading commit data... | |
| objc-foreach-1.m | Loading commit data... | |
| objc-foreach-2.m | Loading commit data... | |
| objc-foreach-3.m | Loading commit data... | |
| objc-foreach-4.m | Loading commit data... | |
| objc-foreach-5.m | Loading commit data... | |
| objc-gc-4.m | Loading commit data... | |
| objc-nofilename-1.m | Loading commit data... | |
| param-1.m | Loading commit data... | |
| pr18255.m | Loading commit data... | |
| pr23214.m | Loading commit data... | |
| pr23709.m | Loading commit data... | |
| pr24393.m | Loading commit data... | |
| pr28049.m | Loading commit data... | |
| pr28050.m | Loading commit data... | |
| pr44509.m | Loading commit data... | |
| pr45735.m | Loading commit data... | |
| pr45878.m | Loading commit data... | |
| pr48177.m | Loading commit data... | |
| pr48187.m | Loading commit data... | |
| pr69844.m | Loading commit data... | |
| pragma-1.m | Loading commit data... | |
| private-1.m | Loading commit data... | |
| private-2.m | Loading commit data... | |
| proto-hier-1.m | Loading commit data... | |
| proto-hier-2.m | Loading commit data... | |
| proto-init-mimatch-1.m | Loading commit data... | |
| proto-lossage-1.m | Loading commit data... | |
| proto-lossage-2.m | Loading commit data... | |
| proto-lossage-3.m | Loading commit data... | |
| proto-lossage-4.m | Loading commit data... | |
| proto-lossage-5.m | Loading commit data... | |
| proto-lossage-6.m | Loading commit data... | |
| proto-lossage-7.m | Loading commit data... | |
| proto-qual-1.m | Loading commit data... | |
| protocol-forward-1.m | Loading commit data... | |
| protocol-forward-2.m | Loading commit data... | |
| protocol-inheritance-1.m | Loading commit data... | |
| protocol-inheritance-2.m | Loading commit data... | |
| protocol-optional-1.m | Loading commit data... | |
| protocol-qualifier-1.m | Loading commit data... | |
| protocol-qualifier-2.m | Loading commit data... | |
| selector-1.m | Loading commit data... | |
| selector-2.m | Loading commit data... | |
| selector-3.m | Loading commit data... | |
| selector-4.m | Loading commit data... | |
| selector-warn-1.m | Loading commit data... | |
| set-not-used-1.m | Loading commit data... | |
| shadow-1.m | Loading commit data... | |
| shadow-2.m | Loading commit data... | |
| sizeof-1.m | Loading commit data... | |
| stabs-1.m | Loading commit data... | |
| static-1.m | Loading commit data... | |
| stret-1.m | Loading commit data... | |
| stret-2.m | Loading commit data... | |
| stubify-1.m | Loading commit data... | |
| stubify-2.m | Loading commit data... | |
| super-class-1.m | Loading commit data... | |
| super-class-2.m | Loading commit data... | |
| super-class-3.m | Loading commit data... | |
| super-class-4.m | Loading commit data... | |
| super-dealloc-1.m | Loading commit data... | |
| super-dealloc-2.m | Loading commit data... | |
| symtab-1.m | Loading commit data... | |
| sync-1.m | Loading commit data... | |
| sync-2.m | Loading commit data... | |
| sync-3.m | Loading commit data... | |
| threedotthree-abi-1.m | Loading commit data... | |
| too-many-args.m | Loading commit data... | |
| try-catch-1.m | Loading commit data... | |
| try-catch-10.m | Loading commit data... | |
| try-catch-11.m | Loading commit data... | |
| try-catch-12.m | Loading commit data... | |
| try-catch-3.m | Loading commit data... | |
| try-catch-4.m | Loading commit data... | |
| try-catch-5.m | Loading commit data... | |
| try-catch-6.m | Loading commit data... | |
| try-catch-7.m | Loading commit data... | |
| try-catch-9.m | Loading commit data... | |
| two-types-1.m | Loading commit data... | |
| type-size-1.m | Loading commit data... | |
| type-size-2.m | Loading commit data... | |
| type-size-3.m | Loading commit data... | |
| type-size-4.m | Loading commit data... | |
| type-size-5.m | Loading commit data... | |
| typedef-alias-1.m | Loading commit data... | |
| undeclared-selector.m | Loading commit data... | |
| va-meth-1.m | Loading commit data... | |
| volatile-1.m | Loading commit data... | |
| weak-1.m | Loading commit data... | |
| zero-link-1.m | Loading commit data... | |
| zero-link-2.m | Loading commit data... | |
| zero-link-3.m | Loading commit data... |