On 11/12/24 9:02 AM, David Malcolm wrote:
Consolidate the location-printing logic in cp/error.cc, as preliminary
work towards supporting nested diagnostics (PR other/116253).

OK.

gcc/cp/ChangeLog:
        PR other/116253
        * error.cc (print_location): Move to earlier in the file.
        (print_instantiation_partial_context_line): Replace
        location-printing logic with a call to print_location.
        (print_instantiation_partial_context): Likewise, splitting up
        pp_verbatim calls.
        (maybe_print_constexpr_context): Likewise.

Signed-off-by: David Malcolm <dmalc...@redhat.com>
---
  gcc/cp/error.cc | 71 +++++++++++++++++--------------------------------
  1 file changed, 24 insertions(+), 47 deletions(-)

diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc
index 7ef79b90868f..23cfee4405ed 100644
--- a/gcc/cp/error.cc
+++ b/gcc/cp/error.cc
@@ -3818,6 +3818,20 @@ print_instantiation_full_context 
(diagnostic_text_output_format &text_output)
    print_instantiation_partial_context (text_output, p, location);
  }
+static void
+print_location (diagnostic_text_output_format &text_output,
+               location_t loc)
+{
+  expanded_location xloc = expand_location (loc);
+  pretty_printer *const pp = text_output.get_printer ();
+  if (text_output.show_column_p ())
+    pp_verbatim (pp, _("%r%s:%d:%d:%R   "),
+                "locus", xloc.file, xloc.line, xloc.column);
+  else
+    pp_verbatim (pp, _("%r%s:%d:%R   "),
+                "locus", xloc.file, xloc.line);
+}
+
  /* Helper function of print_instantiation_partial_context() that
     prints a single line of instantiation context.  */
@@ -3829,17 +3843,10 @@ print_instantiation_partial_context_line (diagnostic_text_output_format &text_ou
    if (loc == UNKNOWN_LOCATION)
      return;
- expanded_location xloc = expand_location (loc);
+  print_location (text_output, loc);
pretty_printer *const pp = text_output.get_printer (); - if (text_output.show_column_p ())
-    pp_verbatim (pp, _("%r%s:%d:%d:%R   "),
-                "locus", xloc.file, xloc.line, xloc.column);
-  else
-    pp_verbatim (pp, _("%r%s:%d:%R   "),
-                "locus", xloc.file, xloc.line);
-
    if (t != NULL)
      {
        if (t->list_p ())
@@ -3912,22 +3919,11 @@ print_instantiation_partial_context 
(diagnostic_text_output_format &text_output,
        }
        if (t != NULL && skip > 0)
        {
-         expanded_location xloc;
-         xloc = expand_location (loc);
-         pretty_printer *const pp = text_output.get_printer ();
-         if (text_output.show_column_p ())
-           pp_verbatim (pp,
-                        _("%r%s:%d:%d:%R   [ skipping %d instantiation "
-                          "contexts, use -ftemplate-backtrace-limit=0 to "
-                          "disable ]\n"),
-                        "locus", xloc.file, xloc.line, xloc.column, skip);
-         else
-           pp_verbatim (pp,
-                        _("%r%s:%d:%R   [ skipping %d instantiation "
-                          "contexts, use -ftemplate-backtrace-limit=0 to "
-                          "disable ]\n"),
-                        "locus", xloc.file, xloc.line, skip);
-
+         print_location (text_output, loc);
+         pp_verbatim (text_output.get_printer (),
+                      _("[ skipping %d instantiation contexts,"
+                        " use -ftemplate-backtrace-limit=0 to disable ]\n"),
+                      skip);
          do {
            loc = t->locus;
            t = t->next;
@@ -3973,36 +3969,17 @@ maybe_print_constexpr_context 
(diagnostic_text_output_format &text_output)
FOR_EACH_VEC_ELT (call_stack, ix, t)
      {
-      expanded_location xloc = expand_location (EXPR_LOCATION (t));
        const char *s = expr_as_string (t, 0);
        pretty_printer *const pp = text_output.get_printer ();
-      if (text_output.show_column_p ())
-       pp_verbatim (pp,
-                    _("%r%s:%d:%d:%R   in %<constexpr%> expansion of %qs"),
-                    "locus", xloc.file, xloc.line, xloc.column, s);
-      else
-       pp_verbatim (pp,
-                    _("%r%s:%d:%R   in %<constexpr%> expansion of %qs"),
-                    "locus", xloc.file, xloc.line, s);
+      print_location (text_output, EXPR_LOCATION (t));
+      pp_verbatim (pp,
+                  _("in %<constexpr%> expansion of %qs"),
+                  s);
        pp_newline (pp);
      }
  }
  
-static void
-print_location (diagnostic_text_output_format &text_output,
-               location_t loc)
-{
-  expanded_location xloc = expand_location (loc);
-  pretty_printer *const pp = text_output.get_printer ();
-  if (text_output.show_column_p ())
-    pp_verbatim (pp, _("%r%s:%d:%d:%R   "),
-                 "locus", xloc.file, xloc.line, xloc.column);
-  else
-    pp_verbatim (pp, _("%r%s:%d:%R   "),
-                 "locus", xloc.file, xloc.line);
-}
-
  static void
  print_constrained_decl_info (diagnostic_text_output_format &text_output,
                             tree decl)

Reply via email to