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





Reply via email to