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

            Bug ID: 105916
           Summary: gfortran -fdiagnostics-format=json yields incorrect
                    output
           Product: gcc
           Version: 12.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gnikit at duck dot com
  Target Milestone: ---

Using the option `-fdiagnostics-format=json` with gfortran yields unexpected
and erroneous output.

Consider the trivial MWE

tmp.f90
```fortran
program main
    implicit none
    print*, "Hello World!"
end program main
```

One would expect when compiled the json output to be empty, but 

gfortran -fdiagnostics-format=json tmp.f90


results to (formatted to be human readable)

```json
[
  {
    "kind": "error",
    "column-origin": 1,
    "children": [
      {
        "kind": "error",
        "escape-source": false,
        "locations": [
          {
            "caret": {
              "byte-column": 13,
              "display-column": 13,
              "line": 2,
              "file": "tmp.f90",
              "column": 13
            }
          }
        ],
        "message": "Function ‘implicit’ requires an argument list at (1)"
      },
      {
        "kind": "error",
        "escape-source": false,
        "locations": [
          {
            "caret": {
              "byte-column": 13,
              "display-column": 13,
              "line": 2,
              "file": "tmp.f90",
              "column": 13
            }
          }
        ],
        "message": "Syntax error in IMPLICIT statement at (1)"
      },
      {
        "kind": "error",
        "escape-source": false,
        "locations": [
          {
            "caret": {
              "byte-column": 10,
              "display-column": 10,
              "line": 3,
              "file": "tmp.f90",
              "column": 10
            }
          }
        ],
        "message": "Function ‘print’ requires an argument list at (1)"
      },
      {
        "kind": "error",
        "escape-source": false,
        "locations": [
          {
            "caret": {
              "byte-column": 4,
              "display-column": 4,
              "line": 4,
              "file": "tmp.f90",
              "column": 4
            }
          }
        ],
        "message": "Function ‘end’ requires an argument list at (1)"
      }
    ],
    "escape-source": false,
    "locations": [
      {
        "caret": {
          "byte-column": 8,
          "display-column": 8,
          "line": 1,
          "file": "tmp.f90",
          "column": 8
        }
      }
    ],
    "message": "Function ‘program’ requires an argument list at (1)"
  }
]

```

Reply via email to