Introduce pretty_printer::clone vfunc
authorDavid Malcolm <dmalcolm@redhat.com>
Wed, 11 Dec 2019 19:06:39 +0000 (19:06 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Wed, 11 Dec 2019 19:06:39 +0000 (19:06 +0000)
commit368877a11b789a74b1ae5b878e3bd30039118c30
tree616fe464613c54fdd3f9145a99dc1e15724d8745
parent34a53788fec49e0a85bd32b51b057cfaae0200c8
Introduce pretty_printer::clone vfunc

This patch provides a way to clone a pretty_printer.

This is needed so that we can capture text in a label_text and make
layout decisions based on it, using the policy of global_dc's printer,
whilst within a call to diagnostic_show_locus.  We can't print with
the pretty_printer itself within a call to diagnostic_show_locus since
it has partly-buffered content.

gcc/c-family/ChangeLog:
* c-pretty-print.c (c_pretty_printer::clone): New vfunc
implementation.
* c-pretty-print.h (c_pretty_printer::clone): New vfunc decl.

gcc/cp/ChangeLog:
* cxx-pretty-print.c (cxx_pretty_printer::clone): New vfunc
implementation.
* cxx-pretty-print.h (cxx_pretty_printer::clone): New vfunc decl.
* error.c (cxx_format_postprocessor::clone): New vfunc.

gcc/ChangeLog:
* pretty-print.c (pretty_printer::pretty_printer): New copy-ctor.
(pretty_printer::clone): New vfunc implementation.
* pretty-print.h (format_postprocessor::clone): New pure vfunc
decl.
(pretty_printer::pretty_printer): New copy-ctor decl.
(pretty_printer::clone): New vfunc decl.

From-SVN: r279244
gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-pretty-print.c
gcc/c-family/c-pretty-print.h
gcc/cp/ChangeLog
gcc/cp/cxx-pretty-print.c
gcc/cp/cxx-pretty-print.h
gcc/cp/error.c
gcc/pretty-print.c
gcc/pretty-print.h