On 6/25/26 11:31 AM, Harald Anlauf wrote:
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
The master branch has been updated by Jerry DeLisle <[email protected]>:
https://gcc.gnu.org/g:523be91d54c05016ee09c2f7ffc74d35f56e48e5
commit r17-1907-g523be91d54c05016ee09c2f7ffc74d35f56e48e5
Author: Jerry DeLisle <[email protected]>
Date: Tue Jun 23 18:17:27 2026 -0700
I studies this further and the next patch I will factor the expanded message
code to a helper function. Then call this helper for the other locations where
there is a namlist error.
Thanks,
Jerry
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