The master branch has been updated by Jerry DeLisle <[email protected]>:
https://gcc.gnu.org/g:86b7458e072b0651f8b04bcba64f5e2d1586bdec
commit r17-2906-g86b7458e072b0651f8b04bcba64f5e2d1586bdec
Author: Jerry DeLisle <[email protected]>
Date: Tue Jul 28 19:02:36 2026 -0700
fortran: [PR118793] Additional expanded namelist read diagnostics
On 8/3/26 9:48 AM, Jerry DeLisle wrote:
In the absence of comments I plan to commit this later today.
On 8/1/26 5:52 AM, Jerry DeLisle wrote:
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.