Re: [PATCH] [PR118793] Provide expanded diagnostics for namelist read

Jerry D <[email protected]> Wed, 24 Jun 2026 16:15:10 -0700
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
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?

> 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
>