diff options
author | Tobias Burnus <burnus@gcc.gnu.org> | 2012-05-04 20:53:17 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2012-05-04 20:53:17 +0200 |
commit | 6ba84c3143a13266f40ea804ae2fb98717ccfc04 (patch) | |
tree | a8fd75206e80a78b28a8d7f21a16cbdaa1a6bb2e | |
parent | cef31f9c56a00141385da8caa2efb53886747e67 (diff) | |
download | gcc-6ba84c3143a13266f40ea804ae2fb98717ccfc04.zip gcc-6ba84c3143a13266f40ea804ae2fb98717ccfc04.tar.gz gcc-6ba84c3143a13266f40ea804ae2fb98717ccfc04.tar.bz2 |
re PR fortran/53111 (Derived types cannot be USE-associated again with -std=f95)
2012-05-04 Tobias Burnus <burnus@net-b.de>
PR fortran/53111
* resolve.c (resolve_fl_derived): Fix -std=f95
diagnostic for generic vs. DT names.
2012-05-04 Tobias Burnus <burnus@net-b.de>
PR fortran/53111
* gfortran.dg/constructor_7.f90: New.
* gfortran.dg/constructor_8.f90: New.
From-SVN: r187174
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 20 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/constructor_7.f90 | 48 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/constructor_8.f90 | 22 |
5 files changed, 91 insertions, 7 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 5662651..0965b00 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2012-05-04 Tobias Burnus <burnus@net-b.de> + + PR fortran/53111 + * resolve.c (resolve_fl_derived): Fix -std=f95 + diagnostic for generic vs. DT names. + 2012-05-03 Tobias Burnus <burnus@net-b.de> PR fortran/52864 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 57da577..411ebb5 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -12015,6 +12015,8 @@ resolve_fl_derived (gfc_symbol *sym) if (!sym->attr.is_class) gfc_find_symbol (sym->name, sym->ns, 0, &gen_dt); if (gen_dt && gen_dt->generic && gen_dt->generic->next + && (!gen_dt->generic->sym->attr.use_assoc + || gen_dt->generic->sym->module != gen_dt->generic->next->sym->module) && gfc_notify_std (GFC_STD_F2003, "Fortran 2003: Generic name '%s' of " "function '%s' at %L being the same name as derived " "type at %L", sym->name, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4468854..c3e7db7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2012-05-04 Tobias Burnus <burnus@net-b.de> + + PR fortran/53111 + * gfortran.dg/constructor_7.f90: New. + * gfortran.dg/constructor_8.f90: New. + 2012-05-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/53166 @@ -92,10 +98,10 @@ 2012-05-03 Greta Yorsh <Greta.Yorsh@arm.com> - * gcc.dg/fixed-point/composite-type.c (dg-options): Add - option -ftrack-macro-expansion=0. - * gcc.dg/fixed-point/operator-bitwise.c (dg-options): Add - option -ftrack-macro-expansion=0. + * gcc.dg/fixed-point/composite-type.c (dg-options): Add + option -ftrack-macro-expansion=0. + * gcc.dg/fixed-point/operator-bitwise.c (dg-options): Add + option -ftrack-macro-expansion=0. 2012-05-03 Greta Yorsh <Greta.Yorsh@arm.com> @@ -260,11 +266,11 @@ Fix expansion point loc for macro-like tokens * gcc.dg/debug/dwarf2/pr41445-5.c: Adjust. - * gcc.dg/debug/dwarf2/pr41445-6.c: Likewise. + * gcc.dg/debug/dwarf2/pr41445-6.c: Likewise. Fix token pasting with -ftrack-macro-expansion * gcc.dg/cpp/paste17.c: New test case for - -ftrack-macro-expansion=2 mode only. + -ftrack-macro-expansion=2 mode only. * gcc.dg/cpp/macro-exp-tracking-5.c: Likewise. 2012-04-30 Eric Botcazou <ebotcazou@adacore.com> @@ -274,7 +280,7 @@ 2012-04-29 Manuel López-Ibáñez <manu@gcc.gnu.org> PR 53149 - * gcc.dg/20011021-1.c: Adjust testcase. + * gcc.dg/20011021-1.c: Adjust testcase. 2012-04-29 Thomas Koenig <tkoenig@gcc.gnu.org> diff --git a/gcc/testsuite/gfortran.dg/constructor_7.f90 b/gcc/testsuite/gfortran.dg/constructor_7.f90 new file mode 100644 index 0000000..f3d6605 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/constructor_7.f90 @@ -0,0 +1,48 @@ +! { dg-do compile } +! { dg-options "-std=f95" } +! +! PR fortran/53111 +! + +! ------------ INVALID ONE ------------------------ + +module m +type t + integer :: i +end type t +end + +module m2 + interface t + module procedure sub + end interface t +contains + integer function sub() + sub = 4 + end function sub +end module m2 + +! Note: The following is formally valid as long as "t" is not used. +! For simplicity, -std=f95 will give an error. +! It is unlikely that a real-world program is rejected with -std=f95 +! because of that. + +use m ! { dg-error "Fortran 2003: Generic name 't' of function 'sub' at .1. being the same name as derived type at" } +use m2 ! { dg-error "Fortran 2003: Generic name 't' of function 'sub' at .1. being the same name as derived type at" } +! i = sub() ! << Truly invalid in F95, valid in F2003 +end + +! ------------ INVALID TWO ------------------------ + +module m3 +type t2 ! { dg-error "Fortran 2003: Generic name 't2' of function 'sub2' at .1. being the same name as derived type at" } + integer :: i +end type t2 + interface t2 + module procedure sub2 + end interface t2 +contains + integer function sub2() ! { dg-error "Fortran 2003: Generic name 't2' of function 'sub2' at .1. being the same name as derived type at" } + sub2 = 4 + end function sub2 +end module m3 diff --git a/gcc/testsuite/gfortran.dg/constructor_8.f90 b/gcc/testsuite/gfortran.dg/constructor_8.f90 new file mode 100644 index 0000000..ff0dff7 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/constructor_8.f90 @@ -0,0 +1,22 @@ +! { dg-do compile } +! { dg-options "-std=f95" } +! +! PR fortran/53111 +! +! Contributed by Jacob Middag, reduced by Janus Weil. +! + +module a + type :: my + real :: x + end type +end module + +module b + use a +end module + +program test + use a + use b +end program |