diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 5ebf40b3b2e66873ff7ab6d9b0a0c2228d759b1a..46ddb8fcfeb5cfdf90ea1cee9995a75db998f26c 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2014-07-02 Jakub Jelinek <jakub@redhat.com> + Fritz Reese <Reese-Fritz@zai.com> + + * decl.c (variable_decl): Reject old style initialization + for derived type components. + 2014-06-29 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> PR fortran/36275 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 7f7428156e3ed246d00f212ece38f8b038189477..25d92a46d3e94478b569fba2ec7598e59aa4e9f3 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -1997,6 +1997,13 @@ variable_decl (int elem) if (!gfc_notify_std (GFC_STD_GNU, "Old-style " "initialization at %C")) return MATCH_ERROR; + else if (gfc_current_state () == COMP_DERIVED) + { + gfc_error ("Invalid old style initialization for derived type " + "component at %C"); + m = MATCH_ERROR; + goto cleanup; + } return match_old_style_init (name); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b364f407b46cf568dafb16365b3873c06495c42a..ad46526bad68b5beacce2aab21976a3d97fdc9e2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-07-02 Jakub Jelinek <jakub@redhat.com> + Fritz Reese <Reese-Fritz@zai.com> + + * gfortran.dg/oldstyle_5.f: New test. + 2014-07-02 Uros Bizjak <ubizjak@gmail.com> * gfortran.dg/ieee/ieee_1.F90 (dg-additional-options): Remove -O0. diff --git a/gcc/testsuite/gfortran.dg/oldstyle_5.f b/gcc/testsuite/gfortran.dg/oldstyle_5.f new file mode 100644 index 0000000000000000000000000000000000000000..8a0d3119fb4823a70ad8a4690ab5c6f1d533bdaa --- /dev/null +++ b/gcc/testsuite/gfortran.dg/oldstyle_5.f @@ -0,0 +1,8 @@ +C { dg-do compile } + TYPE T + INTEGER A(2)/1,2/ ! { dg-error "Invalid old style initialization for derived type component" } + END TYPE + TYPE S + INTEGER B/1/ ! { dg-error "Invalid old style initialization for derived type component" } + END TYPE + END