]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
diagnostics: remove "json" output format
authorDavid Malcolm <dmalcolm@redhat.com>
Mon, 30 Jun 2025 19:04:55 +0000 (15:04 -0400)
committerDavid Malcolm <dmalcolm@redhat.com>
Mon, 30 Jun 2025 19:04:55 +0000 (15:04 -0400)
The "json" output format for diagnostics was deprecated in GCC 15, with
advice to users seeking machine-readable diagnostics from GCC to use
SARIF instead.

This patch eliminates it from GCC 16, simplifying the diagnostics
subsystem somewhat.

Note that the Ada frontend seems to have its own implementation of this
in errout.adb (Output_JSON_Message), and documented in
gnat_ugn.texi.  This patch does not touch Ada.

gcc/ChangeLog:
* Makefile.in (OBJS-libcommon): Drop diagnostic-format-json.o.
* common.opt (fdiagnostics-format=): Drop
"json|json-stderr|json-file".
(diagnostics_output_format): Drop values "json", "json-stderr",
and "json-file".
* diagnostic-format-json.cc: Delete file.
* diagnostic-format.h
(diagnostic_output_format_init_json_stderr): Delete.
(diagnostic_output_format_init_json_file): Delete.
* diagnostic.cc (diagnostic_output_format_init): Delete cases for
DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR and
DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE.
* diagnostic.h (DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR): Delete.
(DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE): Delete.
* doc/invoke.texi: Remove references to json output format.
* doc/ux.texi: Likewise.
* selftest-run-tests.cc (selftest::run_tests): Drop call to
deleted selftest::diagnostic_format_json_cc_tests.
* selftest.h (selftest::diagnostic_format_json_cc_tests): Delete.

gcc/testsuite/ChangeLog:
* c-c++-common/analyzer/out-of-bounds-diagram-1-json.c: Deleted test.
* c-c++-common/diagnostic-format-json-1.c: Deleted test.
* c-c++-common/diagnostic-format-json-2.c: Deleted test.
* c-c++-common/diagnostic-format-json-3.c: Deleted test.
* c-c++-common/diagnostic-format-json-4.c: Deleted test.
* c-c++-common/diagnostic-format-json-5.c: Deleted test.
* c-c++-common/diagnostic-format-json-file-1.c: Deleted test.
* c-c++-common/diagnostic-format-json-stderr-1.c: Deleted test.
* c-c++-common/pr106133.c: Deleted test.
* g++.dg/pr90462.C: Deleted test.
* gcc.dg/plugin/diagnostic-test-paths-3.c: Deleted test.
* gcc.dg/plugin/plugin.exp (plugin_test_list): Remove deleted
test.
* gfortran.dg/diagnostic-format-json-1.F90: Deleted test.
* gfortran.dg/diagnostic-format-json-2.F90: Deleted test.
* gfortran.dg/diagnostic-format-json-3.F90: Deleted test.
* gfortran.dg/diagnostic-format-json-pr105916.F90: Deleted test.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
26 files changed:
gcc/Makefile.in
gcc/common.opt
gcc/diagnostic-format-json.cc [deleted file]
gcc/diagnostic-format.h
gcc/diagnostic.cc
gcc/diagnostic.h
gcc/doc/invoke.texi
gcc/doc/ux.texi
gcc/selftest-run-tests.cc
gcc/selftest.h
gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-1-json.c [deleted file]
gcc/testsuite/c-c++-common/diagnostic-format-json-1.c [deleted file]
gcc/testsuite/c-c++-common/diagnostic-format-json-2.c [deleted file]
gcc/testsuite/c-c++-common/diagnostic-format-json-3.c [deleted file]
gcc/testsuite/c-c++-common/diagnostic-format-json-4.c [deleted file]
gcc/testsuite/c-c++-common/diagnostic-format-json-5.c [deleted file]
gcc/testsuite/c-c++-common/diagnostic-format-json-file-1.c [deleted file]
gcc/testsuite/c-c++-common/diagnostic-format-json-stderr-1.c [deleted file]
gcc/testsuite/c-c++-common/pr106133.c [deleted file]
gcc/testsuite/g++.dg/pr90462.C [deleted file]
gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c [deleted file]
gcc/testsuite/gcc.dg/plugin/plugin.exp
gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90 [deleted file]
gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90 [deleted file]
gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90 [deleted file]
gcc/testsuite/gfortran.dg/diagnostic-format-json-pr105916.F90 [deleted file]

index 9535804f7fb5cc451e416ac36f6891b4b7ea11b4..d5ceccc424b2962bd77b8fb68c6afde23ce92305 100644 (file)
@@ -1853,7 +1853,6 @@ OBJS = \
 # no target dependencies.
 OBJS-libcommon = diagnostic-spec.o diagnostic.o diagnostic-color.o \
        diagnostic-format-html.o \
-       diagnostic-format-json.o \
        diagnostic-format-sarif.o \
        diagnostic-format-text.o \
        diagnostic-global-context.o \
index a76a6920b54cd8fa675f913c04def0b1710a302b..b4845d278e48a7a25ccc24c7a7c4933fad895ac1 100644 (file)
@@ -1485,7 +1485,7 @@ Common Joined RejectNegative UInteger
 
 fdiagnostics-format=
 Common Joined RejectNegative Enum(diagnostics_output_format)
--fdiagnostics-format=[text|sarif-stderr|sarif-file|json|json-stderr|json-file] Select output format.
+-fdiagnostics-format=[text|sarif-stderr|sarif-file]    Select output format.
 
 fdiagnostics-add-output=
 Common Joined RejectNegative
@@ -1527,15 +1527,6 @@ Name(diagnostics_output_format) Type(int)
 EnumValue
 Enum(diagnostics_output_format) String(text) Value(DIAGNOSTICS_OUTPUT_FORMAT_TEXT)
 
-EnumValue
-Enum(diagnostics_output_format) String(json) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR)
-
-EnumValue
-Enum(diagnostics_output_format) String(json-stderr) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR)
-
-EnumValue
-Enum(diagnostics_output_format) String(json-file) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE)
-
 EnumValue
 Enum(diagnostics_output_format) String(sarif-stderr) Value(DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR)
 
diff --git a/gcc/diagnostic-format-json.cc b/gcc/diagnostic-format-json.cc
deleted file mode 100644 (file)
index fb54897..0000000
+++ /dev/null
@@ -1,605 +0,0 @@
-/* JSON output for diagnostics
-   Copyright (C) 2018-2025 Free Software Foundation, Inc.
-   Contributed by David Malcolm <dmalcolm@redhat.com>.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY; without even the implied warranty of MERCHANTABILITY or
-FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-
-#include "config.h"
-#define INCLUDE_VECTOR
-#include "system.h"
-#include "coretypes.h"
-#include "diagnostic.h"
-#include "selftest-diagnostic.h"
-#include "diagnostic-metadata.h"
-#include "diagnostic-path.h"
-#include "diagnostic-format.h"
-#include "diagnostic-buffer.h"
-#include "json.h"
-#include "selftest.h"
-#include "diagnostic-client-data-hooks.h"
-#include "logical-location.h"
-
-class json_output_format;
-
-/* Concrete buffering implementation subclass for JSON output.  */
-
-class diagnostic_json_format_buffer : public diagnostic_per_format_buffer
-{
-public:
-  friend class json_output_format;
-
-  diagnostic_json_format_buffer (json_output_format &format)
-  : m_format (format)
-  {}
-
-  void dump (FILE *out, int indent) const final override;
-  bool empty_p () const final override;
-  void move_to (diagnostic_per_format_buffer &dest) final override;
-  void clear () final override;
-  void flush () final override;
-
-private:
-  json_output_format &m_format;
-  std::vector<std::unique_ptr<json::object>> m_results;
-};
-
-/* Subclass of diagnostic_output_format for JSON output.  */
-
-class json_output_format : public diagnostic_output_format
-{
-public:
-  friend class diagnostic_json_format_buffer;
-
-  void dump (FILE *out, int indent) const override
-  {
-    fprintf (out, "%*sjson_output_format\n", indent, "");
-    diagnostic_output_format::dump (out, indent);
-  }
-
-  std::unique_ptr<diagnostic_per_format_buffer>
-  make_per_format_buffer () final override
-  {
-    return std::make_unique<diagnostic_json_format_buffer> (*this);
-  }
-  void set_buffer (diagnostic_per_format_buffer *base_buffer) final override
-  {
-    diagnostic_json_format_buffer *buffer
-      = static_cast<diagnostic_json_format_buffer *> (base_buffer);
-    m_buffer = buffer;
-  }
-
-  void on_begin_group () final override
-  {
-    /* No-op.  */
-  }
-  void on_end_group () final override
-  {
-    m_cur_group = nullptr;
-    m_cur_children_array = nullptr;
-  }
-  void
-  on_report_diagnostic (const diagnostic_info &diagnostic,
-                       diagnostic_t orig_diag_kind) final override;
-  void on_diagram (const diagnostic_diagram &) final override
-  {
-    /* No-op.  */
-  }
-  void after_diagnostic (const diagnostic_info &) final override
-  {
-    /* No-op.  */
-  }
-  void update_printer () final override
-  {
-    m_printer = m_context.clone_printer ();
-    pp_show_color (m_printer.get ()) = false;
-  }
-  bool follows_reference_printer_p () const final override
-  {
-    return false;
-  }
-
-protected:
-  json_output_format (diagnostic_context &context,
-                     bool formatted)
-  : diagnostic_output_format (context),
-    m_buffer (nullptr),
-    m_toplevel_array (std::make_unique<json::array> ()),
-    m_cur_group (nullptr),
-    m_cur_children_array (nullptr),
-    m_formatted (formatted)
-  {
-  }
-
-  /* Flush the top-level array to OUTF.  */
-  void
-  flush_to_file (FILE *outf)
-  {
-    m_toplevel_array->dump (outf, m_formatted);
-    fprintf (outf, "\n");
-    m_toplevel_array = nullptr;
-  }
-
-private:
-  diagnostic_json_format_buffer *m_buffer;
-
-  /* The top-level JSON array of pending diagnostics.  */
-  std::unique_ptr<json::array> m_toplevel_array;
-
-  /* The JSON object for the current diagnostic group.  */
-  json::object *m_cur_group; // borrowed
-
-  /* The JSON array for the "children" array within the current diagnostic
-     group.  */
-  json::array *m_cur_children_array; // borrowed
-
-  bool m_formatted;
-};
-
-/* Generate a JSON object for LOC.  */
-
-static std::unique_ptr<json::object>
-json_from_expanded_location (diagnostic_context &context, location_t loc)
-{
-  expanded_location exploc = expand_location (loc);
-  std::unique_ptr<json::object> result = std::make_unique <json::object> ();
-  if (exploc.file)
-    result->set_string ("file", exploc.file);
-  result->set_integer ("line", exploc.line);
-
-  const enum diagnostics_column_unit orig_unit = context.m_column_unit;
-  struct
-  {
-    const char *name;
-    enum diagnostics_column_unit unit;
-  } column_fields[] = {
-    {"display-column", DIAGNOSTICS_COLUMN_UNIT_DISPLAY},
-    {"byte-column", DIAGNOSTICS_COLUMN_UNIT_BYTE}
-  };
-  int the_column = INT_MIN;
-  for (int i = 0; i != ARRAY_SIZE (column_fields); ++i)
-    {
-      context.m_column_unit = column_fields[i].unit;
-      diagnostic_column_policy col_policy (context);
-      const int col = col_policy.converted_column (exploc);
-      result->set_integer (column_fields[i].name, col);
-      if (column_fields[i].unit == orig_unit)
-       the_column = col;
-    }
-  gcc_assert (the_column != INT_MIN);
-  result->set_integer ("column", the_column);
-  context.m_column_unit = orig_unit;
-  return result;
-}
-
-/* Generate a JSON object for LOC_RANGE.  */
-
-static std::unique_ptr<json::object>
-json_from_location_range (diagnostic_context &context,
-                         const location_range *loc_range, unsigned range_idx)
-{
-  location_t caret_loc = get_pure_location (loc_range->m_loc);
-
-  if (caret_loc == UNKNOWN_LOCATION)
-    return nullptr;
-
-  location_t start_loc = get_start (loc_range->m_loc);
-  location_t finish_loc = get_finish (loc_range->m_loc);
-
-  std::unique_ptr<json::object> result = std::make_unique <json::object> ();
-  result->set ("caret",
-              json_from_expanded_location (context, caret_loc));
-  if (start_loc != caret_loc
-      && start_loc != UNKNOWN_LOCATION)
-    result->set ("start",
-                json_from_expanded_location (context, start_loc));
-  if (finish_loc != caret_loc
-      && finish_loc != UNKNOWN_LOCATION)
-    result->set ("finish",
-                json_from_expanded_location (context, finish_loc));
-
-  if (loc_range->m_label)
-    {
-      label_text text (loc_range->m_label->get_text (range_idx));
-      if (text.get ())
-       result->set_string ("label", text.get ());
-    }
-
-  return result;
-}
-
-/* Generate a JSON object for HINT.  */
-
-static std::unique_ptr<json::object>
-json_from_fixit_hint (diagnostic_context &context, const fixit_hint *hint)
-{
-  std::unique_ptr<json::object> fixit_obj = std::make_unique <json::object> ();
-
-  location_t start_loc = hint->get_start_loc ();
-  fixit_obj->set ("start",
-                 json_from_expanded_location (context, start_loc));
-  location_t next_loc = hint->get_next_loc ();
-  fixit_obj->set ("next",
-                 json_from_expanded_location (context, next_loc). release ());
-  fixit_obj->set_string ("string", hint->get_string ());
-
-  return fixit_obj;
-}
-
-/* Generate a JSON object for METADATA.  */
-
-static std::unique_ptr<json::object>
-json_from_metadata (const diagnostic_metadata *metadata)
-{
-  std::unique_ptr<json::object> metadata_obj = std::make_unique <json::object> ();
-
-  if (metadata->get_cwe ())
-    metadata_obj->set_integer ("cwe", metadata->get_cwe ());
-
-  return metadata_obj;
-}
-
-/* Make a JSON value for PATH.  */
-
-static std::unique_ptr<json::array>
-make_json_for_path (diagnostic_context &context,
-                   pretty_printer *ref_pp,
-                   const diagnostic_path *path)
-{
-  std::unique_ptr<json::array> path_array = std::make_unique<json::array> ();
-  for (unsigned i = 0; i < path->num_events (); i++)
-    {
-      const diagnostic_event &event = path->get_event (i);
-
-      std::unique_ptr<json::object> event_obj = std::make_unique <json::object> ();
-      if (event.get_location ())
-       event_obj->set ("location",
-                       json_from_expanded_location (context,
-                                                    event.get_location ()));
-      auto pp = ref_pp->clone ();
-      event.print_desc (*pp.get ());
-      event_obj->set_string ("description", pp_formatted_text (pp.get ()));
-      if (logical_location logical_loc = event.get_logical_location ())
-       if (auto hooks = context.get_client_data_hooks ())
-         if (auto mgr = hooks->get_logical_location_manager ())
-           {
-             label_text name (mgr->get_name_for_path_output (logical_loc));
-             event_obj->set_string ("function", name.get ());
-           }
-      event_obj->set_integer ("depth", event.get_stack_depth ());
-      path_array->append (std::move (event_obj));
-    }
-  return path_array;
-}
-
-/* class diagnostic_json_format_buffer : public diagnostic_per_format_buffer.  */
-
-void
-diagnostic_json_format_buffer::dump (FILE *out, int indent) const
-{
-  fprintf (out, "%*sdiagnostic_json_format_buffer:\n", indent, "");
-  int idx = 0;
-  for (auto &result : m_results)
-    {
-      fprintf (out, "%*sresult[%i]:\n", indent + 2, "", idx);
-      result->dump (out, true);
-      fprintf (out, "\n");
-      ++idx;
-    }
-}
-
-bool
-diagnostic_json_format_buffer::empty_p () const
-{
-  return m_results.empty ();
-}
-
-void
-diagnostic_json_format_buffer::move_to (diagnostic_per_format_buffer &base)
-{
-  diagnostic_json_format_buffer &dest
-    = static_cast<diagnostic_json_format_buffer &> (base);
-  for (auto &&result : m_results)
-    dest.m_results.push_back (std::move (result));
-  m_results.clear ();
-}
-
-void
-diagnostic_json_format_buffer::clear ()
-{
-  m_results.clear ();
-}
-
-void
-diagnostic_json_format_buffer::flush ()
-{
-  for (auto &&result : m_results)
-    m_format.m_toplevel_array->append (std::move (result));
-  m_results.clear ();
-}
-
-/* Implementation of "on_report_diagnostic" vfunc for JSON output.
-   Generate a JSON object for DIAGNOSTIC, and store for output
-   within current diagnostic group.  */
-
-void
-json_output_format::on_report_diagnostic (const diagnostic_info &diagnostic,
-                                         diagnostic_t orig_diag_kind)
-{
-  pretty_printer *const pp = get_printer ();
-  pp_output_formatted_text (pp, m_context.get_urlifier ());
-
-  json::object *diag_obj = new json::object ();
-
-  /* Get "kind" of diagnostic.  */
-  {
-    /* Lose the trailing ": ".  */
-    const char *kind_text = get_diagnostic_kind_text (diagnostic.kind);
-    size_t len = strlen (kind_text);
-    gcc_assert (len > 2);
-    gcc_assert (kind_text[len - 2] == ':');
-    gcc_assert (kind_text[len - 1] == ' ');
-    char *rstrip = xstrdup (kind_text);
-    rstrip[len - 2] = '\0';
-    diag_obj->set_string ("kind", rstrip);
-    free (rstrip);
-  }
-
-  // FIXME: encoding of the message (json::string requires UTF-8)
-  diag_obj->set_string ("message", pp_formatted_text (pp));
-  pp_clear_output_area (pp);
-
-  if (char *option_text = m_context.make_option_name (diagnostic.option_id,
-                                                     orig_diag_kind,
-                                                     diagnostic.kind))
-    {
-      diag_obj->set_string ("option", option_text);
-      free (option_text);
-    }
-
-  if (char *option_url = m_context.make_option_url (diagnostic.option_id))
-    {
-      diag_obj->set_string ("option_url", option_url);
-      free (option_url);
-    }
-
-  if (m_buffer)
-    {
-      gcc_assert (!m_cur_group);
-      m_buffer->m_results.push_back (std::unique_ptr<json::object> (diag_obj));
-    }
-  else
-    {
-      /* If we've already emitted a diagnostic within this auto_diagnostic_group,
-        then add diag_obj to its "children" array.  */
-      if (m_cur_group)
-       {
-         gcc_assert (m_cur_children_array);
-         m_cur_children_array->append (diag_obj);
-       }
-      else
-       {
-         /* Otherwise, make diag_obj be the top-level object within the group;
-            add a "children" array and record the column origin.  */
-         m_cur_group = diag_obj;
-         std::unique_ptr<json::array> children_array
-           = std::make_unique<json::array> ();
-         m_cur_children_array = children_array.get (); // borrowed
-         diag_obj->set ("children", std::move (children_array));
-         diag_obj->set_integer ("column-origin", m_context.m_column_origin);
-         m_toplevel_array->append (diag_obj);
-       }
-    }
-
-  /* diag_obj is now owned by either m_cur_children_array or
-     m_toplevel_array; further uses of diag_obj are borrowing it.  */
-
-  const rich_location *richloc = diagnostic.richloc;
-
-  {
-    std::unique_ptr<json::array> loc_array = std::make_unique<json::array> ();
-    for (unsigned int i = 0; i < richloc->get_num_locations (); i++)
-      {
-       const location_range *loc_range = richloc->get_range (i);
-       if (std::unique_ptr<json::object> loc_obj
-             = json_from_location_range (m_context, loc_range, i))
-         loc_array->append (std::move (loc_obj));
-      }
-    diag_obj->set ("locations", std::move (loc_array));
-  }
-
-  if (richloc->get_num_fixit_hints ())
-    {
-      std::unique_ptr<json::array> fixit_array = std::make_unique<json::array> ();
-      for (unsigned int i = 0; i < richloc->get_num_fixit_hints (); i++)
-       {
-         const fixit_hint *hint = richloc->get_fixit_hint (i);
-         fixit_array->append (json_from_fixit_hint (m_context, hint));
-       }
-      diag_obj->set ("fixits", std::move (fixit_array));
-    }
-
-  /* TODO: tree-ish things:
-     TODO: functions
-     TODO: inlining information
-     TODO: macro expansion information.  */
-
-  if (diagnostic.metadata)
-    diag_obj->set ("metadata", json_from_metadata (diagnostic.metadata));
-
-  const diagnostic_path *path = richloc->get_path ();
-  if (path)
-    diag_obj->set ("path", make_json_for_path (m_context, get_printer (), path));
-
-  diag_obj->set_bool ("escape-source", richloc->escape_on_output_p ());
-}
-
-class json_stderr_output_format : public json_output_format
-{
-public:
-  json_stderr_output_format (diagnostic_context &context,
-                            bool formatted)
-    : json_output_format (context, formatted)
-  {
-  }
-  ~json_stderr_output_format ()
-  {
-    flush_to_file (stderr);
-  }
-  bool machine_readable_stderr_p () const final override
-  {
-    return true;
-  }
-};
-
-class json_file_output_format : public json_output_format
-{
-public:
-  json_file_output_format (diagnostic_context &context,
-                          bool formatted,
-                          const char *base_file_name)
-  : json_output_format (context, formatted),
-    m_base_file_name (xstrdup (base_file_name))
-  {
-  }
-
-  ~json_file_output_format ()
-  {
-    char *filename = concat (m_base_file_name, ".gcc.json", nullptr);
-    free (m_base_file_name);
-    m_base_file_name = nullptr;
-    FILE *outf = fopen (filename, "w");
-    if (!outf)
-      {
-       const char *errstr = xstrerror (errno);
-       fnotice (stderr, "error: unable to open '%s' for writing: %s\n",
-                filename, errstr);
-       free (filename);
-       return;
-      }
-    flush_to_file (outf);
-    fclose (outf);
-    free (filename);
-  }
-  bool machine_readable_stderr_p () const final override
-  {
-    return false;
-  }
-
-private:
-  char *m_base_file_name;
-};
-
-/* Populate CONTEXT in preparation for JSON output (either to stderr, or
-   to a file) using FMT.  Return a reference to *FMT.  */
-
-static diagnostic_output_format &
-diagnostic_output_format_init_json (diagnostic_context &context,
-                                   std::unique_ptr<json_output_format> fmt)
-{
-  gcc_assert (fmt);
-  diagnostic_output_format &out = *fmt;
-
-  /* Don't colorize the text.  */
-  pp_show_color (fmt->get_printer ()) = false;
-  context.set_show_highlight_colors (false);
-
-  context.set_output_format (std::move (fmt));
-
-  return out;
-}
-
-/* Populate CONTEXT in preparation for JSON output to stderr.
-   Return a reference to the context's new sink.  */
-
-diagnostic_output_format &
-diagnostic_output_format_init_json_stderr (diagnostic_context &context,
-                                          bool formatted)
-{
-  return diagnostic_output_format_init_json
-    (context,
-     std::make_unique<json_stderr_output_format> (context,
-                                                 formatted));
-}
-
-/* Populate CONTEXT in preparation for JSON output to a file named
-   BASE_FILE_NAME.gcc.json.
-   Return a reference to the context's new sink.  */
-
-diagnostic_output_format &
-diagnostic_output_format_init_json_file (diagnostic_context &context,
-                                        bool formatted,
-                                        const char *base_file_name)
-{
-  return diagnostic_output_format_init_json
-    (context,
-     std::make_unique<json_file_output_format> (context,
-                                               formatted,
-                                               base_file_name));
-}
-
-#if CHECKING_P
-
-namespace selftest {
-
-/* We shouldn't call json_from_expanded_location on UNKNOWN_LOCATION,
-   but verify that we handle this gracefully.  */
-
-static void
-test_unknown_location ()
-{
-  test_diagnostic_context dc;
-  json_from_expanded_location (dc, UNKNOWN_LOCATION);
-}
-
-/* Verify that we gracefully handle attempts to serialize bad
-   compound locations.  */
-
-static void
-test_bad_endpoints ()
-{
-  location_t bad_endpoints
-    = make_location (BUILTINS_LOCATION,
-                    UNKNOWN_LOCATION, UNKNOWN_LOCATION);
-
-  location_range loc_range;
-  loc_range.m_loc = bad_endpoints;
-  loc_range.m_range_display_kind = SHOW_RANGE_WITH_CARET;
-  loc_range.m_label = nullptr;
-
-  test_diagnostic_context dc;
-  std::unique_ptr<json::object> obj
-    = json_from_location_range (dc, &loc_range, 0);
-  /* We should have a "caret" value, but no "start" or "finish" values.  */
-  ASSERT_TRUE (obj != nullptr);
-  ASSERT_TRUE (obj->get ("caret") != nullptr);
-  ASSERT_TRUE (obj->get ("start") == nullptr);
-  ASSERT_TRUE (obj->get ("finish") == nullptr);
-}
-
-/* Run all of the selftests within this file.  */
-
-void
-diagnostic_format_json_cc_tests ()
-{
-  test_unknown_location ();
-  test_bad_endpoints ();
-}
-
-} // namespace selftest
-
-#endif /* #if CHECKING_P */
index 4de5842ad2c2db5b0051650a1061cdac64be822e..07db2cd4daa1dd2638936ded6c1e4f30ed5b3035 100644 (file)
@@ -100,12 +100,4 @@ diagnostic_output_format_init (diagnostic_context &,
                               enum diagnostics_output_format,
                               bool json_formatting);
 
-extern diagnostic_output_format &
-diagnostic_output_format_init_json_stderr (diagnostic_context &context,
-                                          bool formatted);
-extern diagnostic_output_format &
-diagnostic_output_format_init_json_file (diagnostic_context &context,
-                                        bool formatted,
-                                        const char *base_file_name);
-
 #endif /* ! GCC_DIAGNOSTIC_FORMAT_H */
index 8547d4882d3e741d880059e6d971e7fbebf86a89..3c2c9b9fb0f8b466a269f72cdc33329657d2d8d6 100644 (file)
@@ -1881,17 +1881,6 @@ diagnostic_output_format_init (diagnostic_context &context,
       /* The default; do nothing.  */
       break;
 
-    case DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR:
-      new_sink = &diagnostic_output_format_init_json_stderr (context,
-                                                            json_formatting);
-      break;
-
-    case DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE:
-      new_sink = &diagnostic_output_format_init_json_file (context,
-                                                          json_formatting,
-                                                          base_file_name);
-      break;
-
     case DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR:
       new_sink = &diagnostic_output_format_init_sarif_stderr (context,
                                                              line_table,
index 9df429275f0b24b507231bc3a8140e030f521639..00f6e352d40101c2b03362deac86d39d2e4e2207 100644 (file)
@@ -71,12 +71,6 @@ enum diagnostics_output_format
   /* The default: textual output.  */
   DIAGNOSTICS_OUTPUT_FORMAT_TEXT,
 
-  /* JSON-based output, to stderr.  */
-  DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR,
-
-  /* JSON-based output, to a file.  */
-  DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE,
-
   /* SARIF-based output, as JSON to stderr.  */
   DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR,
 
index 058bd0e6c8a11a7b1e7577356de87ae6e78fbf9c..8163c3a185cdcc1762ebf828d144d0aabac33646 100644 (file)
@@ -312,7 +312,7 @@ Objective-C and Objective-C++ Dialects}.
 -fdiagnostics-show-location=@r{[}once@r{|}every-line@r{]}
 -fdiagnostics-color=@r{[}auto@r{|}never@r{|}always@r{]}
 -fdiagnostics-urls=@r{[}auto@r{|}never@r{|}always@r{]}
--fdiagnostics-format=@r{[}text@r{|}sarif-stderr@r{|}sarif-file@r{|}json@r{|}json-stderr@r{|}json-file@r{]}
+-fdiagnostics-format=@r{[}text@r{|}sarif-stderr@r{|}sarif-file@r{]}
 -fdiagnostics-add-output=@var{DIAGNOSTICS-OUTPUT-SPEC}
 -fdiagnostics-set-output=@var{DIAGNOSTICS-OUTPUT-SPEC}
 -fno-diagnostics-json-formatting
@@ -5958,8 +5958,7 @@ column numbers, such as @command{dejagnu}.
 @opindex fdiagnostics-column-unit
 @item -fdiagnostics-column-unit=@var{UNIT}
 Select the units for the column number.  This affects traditional diagnostics
-(in the absence of @option{-fno-show-column}), as well as JSON format
-diagnostics if requested.
+(in the absence of @option{-fno-show-column}).
 
 The default @var{UNIT}, @samp{display}, considers the number of display
 columns occupied by each character.  This may be larger than the number
@@ -6035,8 +6034,7 @@ is set to @samp{C}, in which case the default is @samp{ascii}.
 @opindex fdiagnostics-format
 @item -fdiagnostics-format=@var{FORMAT}
 Select a different format for printing diagnostics.
-@var{FORMAT} is @samp{text}, @samp{sarif-stderr}, @samp{sarif-file},
-@samp{json}, @samp{json-stderr}, or @samp{json-file}.
+@var{FORMAT} is @samp{text}, @samp{sarif-stderr} or @samp{sarif-file}.
 
 Using this option replaces any additional ``output sinks'' added by
 @option{-fdiagnostics-add-output=}, or that set by
@@ -6048,14 +6046,6 @@ The @samp{sarif-stderr} and @samp{sarif-file} formats both emit
 diagnostics in SARIF Version 2.1.0 format, either to stderr, or to a file
 named @file{@var{source}.sarif}, respectively.
 
-The various @samp{json}, @samp{json-stderr}, and @samp{json-file} values
-are deprecated and refer to a legacy JSON-based output format.
-The @samp{json} format is a synonym for @samp{json-stderr}.
-The @samp{json-stderr} and @samp{json-file} formats are identical, apart from
-where the JSON is emitted to.  With @samp{json-stderr}, the JSON is emitted
-to stderr, whereas with @samp{json-file} it is written to
-@file{@var{source}.gcc.json}.
-
 @opindex fdiagnostics-add-output
 @item -fdiagnostics-add-output=@var{DIAGNOSTICS-OUTPUT-SPEC}
 Add an additional ``output sink'' for emitting diagnostics.
@@ -6238,11 +6228,8 @@ replaces all existing output sinks, such as from @option{-fdiagnostics-format=},
 @opindex fdiagnostics-json-formatting
 @item -fno-diagnostics-json-formatting
 By default, when JSON is emitted for diagnostics (via
-@option{-fdiagnostics-format=sarif-stderr},
-@option{-fdiagnostics-format=sarif-file},
-@option{-fdiagnostics-format=json},
-@option{-fdiagnostics-format=json-stderr},
-@option{-fdiagnostics-format=json-file}),
+@option{-fdiagnostics-format=sarif-stderr} or
+@option{-fdiagnostics-format=sarif-file}),
 GCC will add newlines and indentation to visually emphasize the
 hierarchical structure of the JSON.
 
index 243b3e08b1121bac473b054d8f7d3da4a55d17b9..22df88f61cea428716337aa283eb9f67a105f188 100644 (file)
@@ -407,7 +407,7 @@ Use @code{auto_diagnostic_group} when issuing multiple related
 diagnostics (seen in various examples on this page).  This informs the
 diagnostic subsystem that all diagnostics issued within the lifetime
 of the @code{auto_diagnostic_group} are related.  For example,
-@option{-fdiagnostics-format=json} will treat the first diagnostic
+@option{-fdiagnostics-add-output=sarif} will treat the first diagnostic
 emitted within the group as a top-level diagnostic, and all subsequent
 diagnostics within the group as its children.  Also, if a warning in the
 group is inhibited at nesting depth D, all subsequent notes at that depth
index 139c7b381b60b5c3086368f2cfcdd0b439122b68..324545302f796c3945f7fb0cd9e0249f2a56baa4 100644 (file)
@@ -101,7 +101,6 @@ selftest::run_tests ()
   diagnostic_color_cc_tests ();
   diagnostic_show_locus_cc_tests ();
   diagnostic_format_html_cc_tests ();
-  diagnostic_format_json_cc_tests ();
   diagnostic_format_sarif_cc_tests ();
   diagnostic_output_spec_cc_tests ();
   edit_context_cc_tests ();
index 4af647cca9e1a5739495f56cc1637bc12e36bc11..eb9e604a321f0b04d00c948c4c141e7650a76a2b 100644 (file)
@@ -223,7 +223,6 @@ extern void convert_cc_tests ();
 extern void dbgcnt_cc_tests ();
 extern void diagnostic_color_cc_tests ();
 extern void diagnostic_format_html_cc_tests ();
-extern void diagnostic_format_json_cc_tests ();
 extern void diagnostic_format_sarif_cc_tests ();
 extern void diagnostic_output_spec_cc_tests ();
 extern void diagnostic_path_output_cc_tests ();
diff --git a/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-1-json.c b/gcc/testsuite/c-c++-common/analyzer/out-of-bounds-diagram-1-json.c
deleted file mode 100644 (file)
index 0a2cc34..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/* { dg-additional-options "-fdiagnostics-format=json-file" } */
-
-/* The custom JSON format doesn't support text art, so this is just a simple
-   smoketext.  */
-
-#include <stdint.h>
-
-int32_t arr[10];
-
-void int_arr_write_element_after_end_off_by_one(int32_t x)
-{
-  arr[10] = x;
-}
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-1.c b/gcc/testsuite/c-c++-common/diagnostic-format-json-1.c
deleted file mode 100644 (file)
index c95218c..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json" } */
-
-#error message
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "#error message",
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 4,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 4,
-                            "display-column": 6,
-                            "byte-column": 6,
-                            "column": 6}}],
-  "escape-source": false}]
-   { dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-2.c b/gcc/testsuite/c-c++-common/diagnostic-format-json-2.c
deleted file mode 100644 (file)
index a8828b7..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json" } */
-
-#warning message
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "warning",
-  "message": "#warning message",
-  "option": "-Wcpp",
-   { dg-end-multiline-output "" } */
-/* { dg-regexp "  \"option_url\": \"https:\[^\n\r\"\]*#index-Wcpp\",\n" } */
-/* { dg-begin-multiline-output "" }
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 4,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 4,
-                            "display-column": 8,
-                            "byte-column": 8,
-                            "column": 8}}],
-  "escape-source": false}]
-   { dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-3.c b/gcc/testsuite/c-c++-common/diagnostic-format-json-3.c
deleted file mode 100644 (file)
index 178bbf9..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json -Werror" } */
-
-#warning message
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "#warning message",
-  "option": "-Werror=cpp",
-   { dg-end-multiline-output "" } */
-/* { dg-regexp "  \"option_url\": \"https:\[^\n\r\"\]*#index-Wcpp\",\n" } */
-/* { dg-begin-multiline-output "" }
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 4,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 4,
-                            "display-column": 8,
-                            "byte-column": 8,
-                            "column": 8}}],
-  "escape-source": false}]
-   { dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-4.c b/gcc/testsuite/c-c++-common/diagnostic-format-json-4.c
deleted file mode 100644 (file)
index 899a03f..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json -Wmisleading-indentation" } */
-
-int test (void)
-{
-  if (1)
-    return 3;
-    return 4;
-  return 5;
-}
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "warning",
-  "message": "this 'if' clause does not guard...",
-  "option": "-Wmisleading-indentation",
-   { dg-end-multiline-output "" } */
-/* { dg-regexp "  \"option_url\": \"https:\[^\n\r\"\]*#index-Wmisleading-indentation\",\n" } */
-/* { dg-begin-multiline-output "" }
-  "children": [{"kind": "note",
-                "message": "...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'",
-                "locations": [{"caret": {"file":
-                                         "line": 8,
-                                         "display-column": 5,
-                                         "byte-column": 5,
-                                         "column": 5},
-                               "finish": {"file":
-                                          "line": 8,
-                                          "display-column": 10,
-                                          "byte-column": 10,
-                                          "column": 10}}],
-                "escape-source": false}],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 6,
-                           "display-column": 3,
-                           "byte-column": 3,
-                           "column": 3},
-                 "finish": {"file":
-                            "line": 6,
-                            "display-column": 4,
-                            "byte-column": 4,
-                            "column": 4}}],
-  "escape-source": false}]
-   { dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-5.c b/gcc/testsuite/c-c++-common/diagnostic-format-json-5.c
deleted file mode 100644 (file)
index ed3139c..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json" } */
-
-struct s { int color; };
-
-int test (struct s *ptr)
-{
-  return ptr->colour;
-}
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "'struct s' has no member named 'colour'; did you mean 'color'?",
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 8,
-                           "display-column": 15,
-                           "byte-column": 15,
-                           "column": 15},
-                 "finish": {"file":
-                            "line": 8,
-                            "display-column": 20,
-                            "byte-column": 20,
-                            "column": 20}}],
-  "fixits": [{"start": {"file":
-                        "line": 8,
-                        "display-column": 15,
-                        "byte-column": 15,
-                        "column": 15},
-              "next": {"file":
-                       "line": 8,
-                       "display-column": 21,
-                       "byte-column": 21,
-                       "column": 21},
-              "string": "color"}],
-  "escape-source": false}]
-   { dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-file-1.c b/gcc/testsuite/c-c++-common/diagnostic-format-json-file-1.c
deleted file mode 100644 (file)
index ddac780..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Check that -fdiagnostics-format=json-file works.  */
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json-file" } */
-
-#warning message
-
-/* Verify that some JSON was written to a file with the expected name.  */
-/* { dg-final { scan-file "diagnostic-format-json-file-1.c.gcc.json" "\"message\": \"#warning message\"" } } */
diff --git a/gcc/testsuite/c-c++-common/diagnostic-format-json-stderr-1.c b/gcc/testsuite/c-c++-common/diagnostic-format-json-stderr-1.c
deleted file mode 100644 (file)
index e798c6b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Check that "json" and "json-stderr" are synonymous when used as
-   arguments to "-fdiagnostics-format=".  */
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json-stderr" } */
-
-#error message
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "#error message",
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 6,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 6,
-                            "display-column": 6,
-                            "byte-column": 6,
-                            "column": 6}}],
-  "escape-source": false}]
-   { dg-end-multiline-output "" } */
diff --git a/gcc/testsuite/c-c++-common/pr106133.c b/gcc/testsuite/c-c++-common/pr106133.c
deleted file mode 100644 (file)
index 7d2c5af..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* PR middle-end/106133 */
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json-file -E" } */
diff --git a/gcc/testsuite/g++.dg/pr90462.C b/gcc/testsuite/g++.dg/pr90462.C
deleted file mode 100644 (file)
index b35e419..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/* { dg-options "-Wdeprecated-copy -fno-diagnostics-json-formatting -fdiagnostics-format=json" } */
-
-template <class> class b;
-struct B {
-  typedef b<char> *c;
-};
-class d {
-public:
-  B::c operator->();
-};
-template <class> struct e;
-class f {
-  typedef int g;
-};
-template <class, class> class h;
-template <class i> class b {
-public:
-  i j;
-  i k;
-  int l;
-  void assign() {
-    int m;
-    h<i, int> n(&m);
-    n.o(&j, &k, l);
-  }
-};
-template <class i, class> class s : f { s &p(const i *, const i *, g); };
-template <class i, class t> s<i, t> &s<i, t>::p(const i *, const i *, g) {
-  d q;
-  q->assign();
-}
-struct G {
-  G();
-  G(int);
-  G(G &);
-};
-template <class i, class> class h {
-public:
-  h(int *);
-  void o(const i *, const i *, unsigned);
-  i r();
-};
-template <class i, class t> void h<i, t>::o(const i *, const i *, unsigned) {
-  G a;
-  a = r();
-}
-template s<char, e<char>> &s<char, e<char>>::p(const char *, const char *, g);
-
-/* { dg-regexp ".*" } */
diff --git a/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c b/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c
deleted file mode 100644 (file)
index a315d20..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fdiagnostics-format=json" } */
-
-#include <stddef.h>
-#include <stdlib.h>
-
-/* Minimal reimplementation of cpython API.  */
-typedef struct PyObject {} PyObject;
-extern int PyArg_ParseTuple (PyObject *args, const char *fmt, ...);
-extern PyObject *PyList_New (int);
-extern PyObject *PyLong_FromLong(long);
-extern void PyList_Append(PyObject *list, PyObject *item);
-
-PyObject *
-make_a_list_of_random_ints_badly(PyObject *self,
-                                PyObject *args)
-{
-  PyObject *list, *item;
-  long count, i;
-
-  if (!PyArg_ParseTuple(args, "i", &count)) {
-    return NULL;
-  }
-
-  list = PyList_New(0);
-       
-  for (i = 0; i < count; i++) {
-    item = PyLong_FromLong(random());
-    PyList_Append(list, item);
-  }
-  
-  return list;
-}
-
-/* { dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "passing NULL as argument 1 to 'PyList_Append' which requires a non-NULL parameter",
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file": "
-                           "line": 29,
-                           "display-column": 5,
-                           "byte-column": 5,
-                           "column": 5},
-                 "finish": {"file": "
-                            "line": 29,
-                            "display-column": 29,
-                            "byte-column": 29,
-                            "column": 29}}],
-  "path": [{"location": {"file": "
-                         "line": 25,
-                         "display-column": 10,
-                         "byte-column": 10,
-                         "column": 10},
-            "description": "when 'PyList_New' fails, returning NULL",
-            "function": "make_a_list_of_random_ints_badly",
-            "depth": 0},
-           {"location": {"file": "
-                         "line": 27,
-                         "display-column": 17,
-                         "byte-column": 17,
-                         "column": 17},
-            "description": "when 'i < count'",
-            "function": "make_a_list_of_random_ints_badly",
-            "depth": 0},
-           {"location": {"file": "
-                         "line": 29,
-                         "display-column": 5,
-                         "byte-column": 5,
-                         "column": 5},
-            "description": "when calling 'PyList_Append', passing NULL from (1) as argument 1",
-            "function": "make_a_list_of_random_ints_badly",
-            "depth": 0}],
-  "escape-source": false}]
-{ dg-end-multiline-output "" } */
index a066b67bb9a1235d388b9b06f7240316a02ec9ec..d1d7f5dbc0372c1f743b6a2633ddb18f7c6ca092 100644 (file)
@@ -116,7 +116,6 @@ set plugin_test_list [list \
     { diagnostic_plugin_test_paths.cc \
          diagnostic-test-paths-1.c \
          diagnostic-test-paths-2.c \
-         diagnostic-test-paths-3.c \
          diagnostic-test-paths-4.c \
          diagnostic-test-paths-5.c \
          diagnostic-test-paths-multithreaded-inline-events.c \
diff --git a/gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90 b/gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90
deleted file mode 100644 (file)
index b8cd61c..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-! { dg-do compile }
-! { dg-options "-fdiagnostics-format=json" }
-
-#error message
-
-#if 0
-{ dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "#error message",
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 4,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 4,
-                            "display-column": 6,
-                            "byte-column": 6,
-                            "column": 6}}],
-  "escape-source": false}]
-{ dg-end-multiline-output "" }
-#endif  
diff --git a/gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90 b/gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90
deleted file mode 100644 (file)
index 9ff1ef5..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-! { dg-do compile }
-! { dg-options "-fdiagnostics-format=json" }
-
-#warning message
-
-#if 0
-{ dg-begin-multiline-output "" }
-[{"kind": "warning",
-  "message": "#warning message",
-  "option": "-Wcpp",
-  "option_url":
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 4,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 4,
-                            "display-column": 8,
-                            "byte-column": 8,
-                            "column": 8}}],
-  "escape-source": false}]
-{ dg-end-multiline-output "" }
-#endif  
diff --git a/gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90 b/gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90
deleted file mode 100644 (file)
index 750e186..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-! { dg-do compile }
-! { dg-options "-fdiagnostics-format=json -Werror" }
-
-#warning message
-
-#if 0
-{ dg-begin-multiline-output "" }
-[{"kind": "error",
-  "message": "#warning message",
-  "option": "-Werror=cpp",
-  "option_url":
-  "children": [],
-  "column-origin": 1,
-  "locations": [{"caret": {"file":
-                           "line": 4,
-                           "display-column": 2,
-                           "byte-column": 2,
-                           "column": 2},
-                 "finish": {"file":
-                            "line": 4,
-                            "display-column": 8,
-                            "byte-column": 8,
-                            "column": 8}}],
-  "escape-source": false}]
-{ dg-end-multiline-output "" }
-#endif  
diff --git a/gcc/testsuite/gfortran.dg/diagnostic-format-json-pr105916.F90 b/gcc/testsuite/gfortran.dg/diagnostic-format-json-pr105916.F90
deleted file mode 100644 (file)
index bf22a86..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-! { dg-do compile }
-! { dg-options "-fdiagnostics-format=json-stderr -fmax-errors=1 -Wfatal-errors" }
-
-program main
-    implicit none
-    print*, "Hello World!"
-end program main
-
-! We expect an empty array as the JSON output.
-#if 0
-{ dg-begin-multiline-output "" }
-[]
-{ dg-end-multiline-output "" }
-#endif