backport: re PR fortran/53111 (Derived types cannot be USE-associated again with -std=f95)
2012-05-05 Tobias Burnus <burnus@net-b.de> Backport from mainline: 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-05 Tobias Burnus <burnus@net-b.de> Backport from mainline: 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: r187193
This commit is contained in:
parent
e411c00bad
commit
3f814846fb
|
@ -1,3 +1,12 @@
|
|||
2012-05-05 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
Backport from mainline:
|
||||
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-02 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
Backport from mainline
|
||||
|
|
|
@ -11991,6 +11991,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,
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
2012-05-05 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
Backport from mainline:
|
||||
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 Ulrich Weigand <ulrich.weigand@linaro.org>
|
||||
|
||||
Backport from mainline:
|
||||
|
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue