Re: [PATCH] fortran: [PR118793] Additional expanded namelist read diagnostics

Jerry DeLisle <[email protected]> Sat, 1 Aug 2026 05:52:04 -0700
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
Ping.

On 7/29/26 7:26 PM, Jerry DeLisle wrote:
> The attached patch is a continuation of my effort to give more 
> informative error messages for namelist reads. As mentioned in the PR, 
> for users with large namelist files this will help greatly with 
> identifying where in the namelist data file the error occurred.
> 
> Regression tested on x86_64. A new test case added from Haralds example 
> in the PR.
> 
> OK for mainline?
> 
> Regards,
> 
> Jerry
> ---
> 
> fortran: [PR118793] Additional expanded namelist read diagnostics
> 
> These changes add expanded diagnostics to error locations not addressed
> in the original patch. This is done by using a new helper function that
> saves the error message information for namelist related errors in a
> buffer and keeping a status bit in the st_parameter_dt structure.
> 
>       PR libfortran/118793
> 
> libgfortran/ChangeLog:
> 
>       * io/io.h (NML_ERR_MSG_LEN): New macro.
>       (st_parameter_dt): Add nml_err_pending bit.
>       (gfc_unit): Add nml_err_msg.
>       * io/list_read.c (nml_error): New function.
>       (eat_separator): Use new function
>       (convert_integer): Likewise.
>       (convert_unsigned): Likewise.
>       (parse_repeat): Likewise.  Save the position where the repeat
>       count starts and report it.
>       (read_logical): Likewise.
>       (read_integer): Likewise.
>       (parse_real): Likewise.
>       (read_complex): Likewise.
>       (read_real): Likewise.
>       (check_type): Likewise.
>       (list_formatted_read_scalar): Likewise.
>       (read_character): Likewise.  Save the initial position of the value
>       (nml_read_obj): Unwind to nml_err_ret on a deferred error.
>       (namelist_read): Store deferred errors in the unit's nml_err_msg
>       buffer.
> 
> gcc/testsuite/ChangeLog:
> 
>       * gfortran.dg/namelist_101.f90: Fix dg-do directive typo and
>       check the expanded diagnostic.
>       * gfortran.dg/namelist_104.f90: New test.