https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116613

--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by David Malcolm <dmalc...@gcc.gnu.org>:

https://gcc.gnu.org/g:7da682c896f949259eaf820be17b5781df2cbead

commit r15-3749-g7da682c896f949259eaf820be17b5781df2cbead
Author: David Malcolm <dmalc...@redhat.com>
Date:   Fri Sep 20 18:51:55 2024 -0400

    diagnostics: convert text hooks to use diagnostic_text_output_format
[PR116613]

    The diagnostic_starter and diagnostic_finalizer callbacks and most of
    their support subroutines are only used by the "text" output format.

    Emphasize this and reduce the binding with diagnostic_context
    by renaming the callbacks to add "_text" in their names, and converting
    the first param from diagnostic_context * to
    diagnostic_text_output_output &.  Update the various subroutines used
    by diagnostic starter/finalizer callbacks to also take a
    diagnostic_text_output_output & rather than a diagnostic_context *.
    Move m_includes and m_last_seen from the context to the text output.

    Use the text_output's get_printer () rather than the context's
    m_printer, which should ease the transition to multiple output sinks.

    No functional change intended.

    gcc/c-family/ChangeLog:
            PR other/116613
            * c-opts.cc: Include "diagnostic-format-text.h".
            (c_diagnostic_finalizer): Rename to...
            (c_diagnostic_text_finalizer): ...this.  Convert first param
            from diagnostic_context * to diagnostic_text_output_format & and
            update accordingly.
            (c_common_diagnostics_set_defaults): Update for renamings.

    gcc/ChangeLog:
            PR other/116613
            * coretypes.h (class diagnostic_text_output_format): Add forward
            decl.
            * diagnostic-format-json.cc
            (json_output_format::after_diagnostic): New.
            * diagnostic-format-sarif.cc
            (sarif_output_format::after_diagnostic): New.
            * diagnostic-format-text.cc: Use pragmas to ignore -Wformat-diag.
            (diagnostic_text_output_format::~diagnostic_text_output_format):
            Use get_printer.  Clean up m_includes_seen here, rather than
            in ~diagnostic_context.
            (diagnostic_text_output_format::on_report_diagnostic):  Use
            get_printer.  Update for callback renamings and pass *this
            to them, rather than &m_context.
            (diagnostic_text_output_format::after_diagnostic): New.
            (diagnostic_text_output_format::includes_seen_p): Move here
            from diagnostic_context/diagnostic.cc.
            (diagnostic_text_output_format::get_location_text): New.
            (maybe_line_and_column): Move here from diagnostic.cc and make
            non-static.
            (diagnostic_text_output_format::report_current_module): Move
            here from diagnostic_context/diagnostic.cc.
            (default_diagnostic_text_starter): Move here from diagnostic.cc,
            renaming from default_diagnostic_starter.
            (default_diagnostic_text_finalizer): Likewise, renaming from
            default_diagnostic_finalizer.
            * diagnostic-format-text.h
            (diagnostic_text_output_format::diagnostic_text_output_format):
            Initialize m_last_module and m_includes_seen.
            (diagnostic_text_output_format::after_diagnostic): New decl.
            (diagnostic_text_output_format::build_prefix): New decl.
            (diagnostic_text_output_format::report_current_module): New decl.
            (diagnostic_text_output_format::append_note): New decl.
            (diagnostic_text_output_format::file_name_as_prefix): New decl.
            (diagnostic_text_output_format::print_path): New decl.
            (diagnostic_text_output_format::show_column_p): New decl.
            (diagnostic_text_output_format::get_location_text): New decl.
            (diagnostic_text_output_format::includes_seen_p): New decl.
            (diagnostic_text_output_format::show_any_path): New decl.
            (diagnostic_text_output_format::m_last_module): New field.
            (diagnostic_text_output_format::m_includes_seen): New field.
            * diagnostic-format.h
            (diagnostic_output_format::after_diagnostic): New vfunc.
            (diagnostic_output_format::get_context): New.
            (diagnostic_output_format::get_diagram_theme): New.
            * diagnostic-macro-unwinding.cc: Include
            "diagnostic-format-text.h".
            (maybe_unwind_expanded_macro_loc): Convert first param from
            diagnostic_context * to diagnostic_text_output_format & and update
            accordingly.
            (virt_loc_aware_diagnostic_finalizer): Likewise.
            * diagnostic-macro-unwinding.h
            (virt_loc_aware_diagnostic_finalizer): Likewise.
            (maybe_unwind_expanded_macro_loc): Likewise.
            * diagnostic-path.cc: Include "diagnostic-format-text.h".
            (path_label::path_label): Drop "ctxt" param and add "colorize"
            and "allow_emojis" params.  Update initializations.
            (path_label::get_text): Use m_colorize rather than querying
            m_ctxt.m_printer.  Use m_allow_emojis rather than querying
            m_ctxt's diagram theme.
            (path_label::m_ctxt): Drop field.
            (path_label::m_colorize): Drop field.
            (path_label::m_allow_emojis): Drop field.
            (event_range::event_range): Drop param "ctxt".  Add params
            "colorize_labels" and "allow_emojis".
            (event_range::print): Convert first param from
            diagnostic_context & to diagnostic_text_output_format & and update
            accordingly.
            (path_summary::path_summary): Likewise.
            (path_summary::print_swimlane_for_event_range): Likewise.
            (print_path_summary_as_text): Likewise for 3rd param.
            (diagnostic_context::print_path): Convert to...
            (diagnostic_text_output_format::print_path): ...this.
            (selftest::test_empty_path): Update to use a
            diagnostic_text_output_format.
            (selftest::test_intraprocedural_path): Likewise.
            (selftest::test_interprocedural_path_1): Likewise.
            (selftest::test_interprocedural_path_2): Likewise.
            (selftest::test_recursion): Likewise.
            (selftest::test_control_flow_1): Likewise.
            (selftest::test_control_flow_2): Likewise.
            (selftest::test_control_flow_3): Likewise.
            (selftest::assert_cfg_edge_path_streq): Likewise.
            (selftest::test_control_flow_5): Likewise.
            (selftest::test_control_flow_6): Likewise.
            * diagnostic.cc (file_name_as_prefix): Convert to...
            (diagnostic_text_output_format::file_name_as_prefix): ...this.
            (diagnostic_context::initialize): Update for renamings.
            Move m_last_module and m_includes_seen into text output.
            (diagnostic_context::finish): Likewise.
            (diagnostic_context::get_location_text): Add "colorize" param.
            (diagnostic_build_prefix): Convert to...
            (diagnostic_text_output_format::build_prefix): ...this.
            (diagnostic_context::includes_seen_p): Move from here to
            diagnostic_text_output_format/diagnostic-format-text.cc.
            (diagnostic_context::report_current_module): Likewise.
            (diagnostic_context::show_any_path): Convert to...
            (diagnostic_text_output_format::show_any_path): ...this.
            (default_diagnostic_starter): Rename and move to
            diagnostic-format-text.cc.
            (default_diagnostic_start_span_fn): Pass colorize bool
            to get_location_text.
            (default_diagnostic_finalizer): Rename and move to
            diagnostic-format-text.cc.
            (diagnostic_context::report_diagnostic): Replace call to
            show_any_path with call to new output format "after_diagnostic"
            vfunc, moving show_any_path call to the text output format.
            (diagnostic_append_note): Convert to...
            (diagnostic_text_output_format::append_note): ...this.
            (selftest::assert_location_text): Pass in false for colorization.
            * diagnostic.h (diagnostic_starter_fn): Rename to...
            (diagnostic_text_starter_fn): ...this.  Convert first param from
            diagnostic_context * to diagnostic_text_output_format &.
            (diagnostic_finalizer_fn, diagnostic_text_finalizer_fn): Likewise.
            (diagnostic_context): Update friends for renamings.
            (diagnostic_context::report_current_module): Move to text output
            format.
            (diagnostic_context::get_location_text): Add "colorize" bool.
            (diagnostic_context::includes_seen_p): Move to text output format.
            (diagnostic_context::show_any_path): Likewise.
            (diagnostic_context::print_path): Likewise.
            (diagnostic_context::m_text_callbacks): Update for renamings.
            (diagnostic_context::m_last_module): Move to text output format.
            (diagnostic_context::m_includes_seen): Likewise.
            (diagnostic_starter): Rename to...
            (diagnostic_text_starter): ...this and update return type.
            (diagnostic_finalizer): Rename to...
            (diagnostic_text_finalizer): ...this and update return type.
            (diagnostic_report_current_module): Drop decl in favor of a member
            function of diagnostic_text_output_format.
            (diagnostic_append_note): Likewise.
            (default_diagnostic_starter): Rename to...
            (default_diagnostic_text_starter): ...this, updating type.
            (default_diagnostic_finalizer): Rename to...
            (default_diagnostic_text_finalizer): ...this, updating type.
            (file_name_as_prefix): Drop decl.
            * langhooks-def.h (lhd_print_error_function): Convert first param
            from diagnostic_context * to diagnostic_text_output_format &.
            * langhooks.cc: Include "diagnostic-format-text.h".
            (lhd_print_error_function): Likewise.  Update accordingly
            * langhooks.h (lang_hooks::print_error_function): Convert first
            param from diagnostic_context * to
            diagnostic_text_output_format &.
            * tree-diagnostic.cc: Include "diagnostic-format-text.h".
            (diagnostic_report_current_function): Convert first param from
            diagnostic_context * to diagnostic_text_output_format & and update
            accordingly.
            (default_tree_diagnostic_starter): Rename to...
            (default_tree_diagnostic_text_starter): ...this.  Convert first
            param from diagnostic_context * to diagnostic_text_output_format &
            and update accordingly.
            (tree_diagnostics_defaults): Update for renamings.

    gcc/cp/ChangeLog:
            PR other/116613
            * cp-tree.h (cxx_print_error_function): Convert first param
            from diagnostic_context * to diagnostic_text_output_format &.
            * error.cc: Include "diagnostic-format-text.h".
            (cxx_initialize_diagnostics): Update for renamings.
            (cxx_print_error_function): Convert first param from
            diagnostic_context * to diagnostic_text_output_format & and update
            accordingly
            (cp_diagnostic_starter): Rename to...
            (cp_diagnostic_text_starter): ...this.  Convert first
            param from diagnostic_context * to diagnostic_text_output_format &
            and update accordingly.
            (cp_print_error_function): Likewise.
            (print_instantiation_full_context): Likewise.
            (print_instantiation_partial_context_line): Likewise.
            (print_instantiation_partial_context): Likewise.
            (maybe_print_instantiation_context): Likewise.
            (maybe_print_constexpr_context): Likewise.
            (print_location): Likewise.
            (print_constrained_decl_info): Likewise.
            (print_concept_check_info): Likewise.
            (print_constraint_context_head): Likewise.
            (print_requires_expression_info): Likewise.
            (maybe_print_single_constraint_context): Likewise.

    gcc/fortran/ChangeLog:
            PR other/116613
            * error.cc: Include "diagnostic-format-text.h".
            (gfc_diagnostic_starter): Rename to...
            (gfc_diagnostic_text_starter): ...this.  Convert first
            param from diagnostic_context * to diagnostic_text_output_format &
            and update accordingly.
            (gfc_diagnostic_finalizer, gfc_diagnostic_text_finalizer):
            Likewise.
            (gfc_diagnostics_init): Update for renamings.
            (gfc_diagnostics_finish): Likewise.

    gcc/jit/ChangeLog:
            PR other/116613
            * dummy-frontend.cc: Include "diagnostic-format-text.h".
            (jit_begin_diagnostic): Convert first param from
            diagnostic_context * to diagnostic_text_output_format &
            (jit_end_diagnostic): Likewise.  Update accordingly.
            (jit_langhook_init): Update for renamings.

    gcc/rust/ChangeLog:
            PR other/116613
            * resolve/rust-ast-resolve-expr.cc
            (funny_ice_finalizer): : Convert first param from
            diagnostic_context * to diagnostic_text_output_format &.
            (ResolveExpr::visit): Update for renaming.

    gcc/testsuite/ChangeLog:
            PR other/116613
            * g++.dg/plugin/show_template_tree_color_plugin.c
            (noop_starter_fn): Rename to...
            (noop_text_starter_fn): ...this.  Update first param from dc to
            text_output.
            (plugin_init): Update for renamings.
            * gcc.dg/plugin/diagnostic_group_plugin.c
            (test_diagnostic_starter): Rename to...
            (test_diagnostic_text_starter): ...this.  Update first param from
            dc to text_output.
            (plugin_init): Update for renaming.
            * gcc.dg/plugin/diagnostic_plugin_test_show_locus.c: Include
            "diagnostic-format-text.h".
            (custom_diagnostic_finalizer): Rename to...
            (custom_diagnostic_text_finalizer): ...this.  Update first param
            from dc to text_output.
            (test_show_locus): Update for renamings.
            * gcc.dg/plugin/location_overflow_plugin.c: Include
            "diagnostic-format-text.h".
            (original_finalizer): Rename to...
            (original_text_finalizer): ...this and update type.
            (verify_unpacked_ranges): Update first param from dc to
            text_output.  Update for this and for renamings.
            (verify_no_columns): Likewise.
            (plugin_init): Update for renamings.

    libcc1/ChangeLog:
            PR other/116613
            * context.cc: Include "diagnostic-format-text.h".
            (plugin_print_error_function): Update first param from
            diagnostic_context * to diagnostic_text_output_format &.

    Signed-off-by: David Malcolm <dmalc...@redhat.com>

Reply via email to