Hello world, first of all, Happy New Year to everybody!
In 2018, we fixed 333 bugs, an average of 0.91 per day. Not bad at all. Here is a first contribution towards reaching something similar, or even better, for 2019. It is a rather straightforward patch which adds a missing warning for truncated strings in constructors. Regression-tested. OK for trunk? Regards Thomas 2019-01-01 Thomas Koenig <tkoe...@gcc.gnu.org> PR fortran/82743 * primary.c (gfc_convert_to_structure_constructor): If a character in a constructor is too long, add a warning with -Wcharacter-truncation. 2019-01-01 Thomas Koenig <tkoe...@gcc.gnu.org> PR fortran/82743 * gfortran.dg/structure_constructor_16.f90: New test.
Index: primary.c =================================================================== --- primary.c (Revision 267335) +++ primary.c (Arbeitskopie) @@ -3074,6 +3074,12 @@ gfc_convert_to_structure_constructor (gfc_expr *e, actual->expr->value.character.length = c; actual->expr->value.character.string = dest; + + if (warn_line_truncation && c < e) + gfc_warning_now (OPT_Wcharacter_truncation, + "CHARACTER expression will be truncated " + "in constructor (%ld/%ld) at %L", (long int) c, + (long int) e, &actual->expr->where); } }
! { dg-do compile } ! { dg-additional-options "-Wcharacter-truncation" } ! PR 82743 - warnings were missing on truncation of structure ! constructors. ! Original test case by Simon Klüpfel PROGRAM TEST TYPE A CHARACTER(LEN=1) :: C END TYPE A TYPE(A) :: A1 A1=A("123") ! { dg-warning "CHARACTER expression will be truncated" } A1=A(C="123") ! { dg-warning "CHARACTER expression will be truncated" } A1%C="123" ! { dg-warning "CHARACTER expression will be truncated" } END PROGRAM TEST