Re: [PATCH] [PR118793] Provide expanded diagnostics for namelist read
Harald Anlauf <[email protected]> Thu, 25 Jun 2026 20:31:25 +0200
| Newsgroups | gmane.comp.gcc.patches,gmane.comp.gcc.fortran |
|---|---|
| Message-ID | <[email protected]> |
Am 25.06.26 um 1:15 AM schrieb Jerry D: > On 6/24/26 2:09 PM, Harald Anlauf wrote: >> Hi Jerry, >> >> the patch looks fine. However, I wonder if it should also >> improve the diagnostics for testcase namelist_101.f90. >> > > I would like to get this one committed so I can start clean and see if i > can find the error path for the case you gave here. > > Is that OK? Sure. Go ahead. Harald >> A slightly extended version does not show the line and column, >> but requires the user to count elements: >> >> program nml_quotes_bug >> implicit none >> integer :: unit = 10 >> character(8) :: c1, c2 >> namelist /tovs_obs_chan/ c1, c2 >> open (unit ,file="nml-quotes-bug.nml") >> write(unit,*) "&tovs_obs_chan" >> write(unit,*) " c1 = '1', c1 = '1'," >> write(unit,*) " c1 = '1', c1 = '1', c2 = 2 ," >> write(unit,*) "/" >> rewind(unit) >> read (unit ,nml=tovs_obs_chan) >> close(unit ,status="delete") >> end program nml_quotes_bug >> >> This gives - with or without your patch: >> >> At line 12 of file namelist_101.f90 (unit = 10, file = 'nml-quotes- >> bug.nml') >> Fortran runtime error: Missing quote while reading item 5 >> >> Error termination. Backtrace: >> ... >> >> Cheers, >> Harald >> >> Am 24.06.26 um 3:40 AM schrieb Jerry D: >>> The attached patch is fairly self explanatory. >>> >>> I added and check on the message length to not exceed 128 bytes to >>> avoid potential problems with excessively long namelist input lines. >>> >>> Two existing test cases are updated to match the dg-output expected >>> for those tests. I do not think a new test case is needd. Even so, >>> with the original test case given in the PR we would give: >>> >>> $ $FC pr118793.f90 >>> $ ./a.out >>> <ERROR>FILE: namelist read: misplaced = sign >>> <ERROR>INTERNAL: namelist read: misplaced = sign >>> <ERROR>SCRATCH: namelist read: misplaced = sign >>> STOP 1 >>> >>> With the change we now give: >>> >>> >>> $ $FC pr118793.f90 >>> $ ./a.out >>> <ERROR>FILE: namelist read: misplaced = sign at line 3, column 12 >>> in file _config.nml >>> param2 === 0.5 ! problematic line >>> ^ >>> >>> <ERROR>INTERNAL: namelist read: misplaced = sign at line 3, column 12 >>> param2 === 0.5 ! problematic line >>> ^ >>> >>> <ERROR>SCRATCH: namelist read: misplaced = sign at line 3, column >>> 12 in file /tmp/gfortrantmpU5c3Ib >>> param2 === 0.5 ! problematic line >>> ^ >>> >>> STOP 1 >> > >