blob: a4d29ab9c1d32b0e8b0e434b717486066b2ab965 [file] [log] [blame]
! { dg-do run}
! PR fortran/99585
module m2
type t
class(*), pointer :: bar(:)
end type
type t2
class(t), allocatable :: my(:)
end type t2
contains
function f (x, y) result(z)
class(t) :: x(:)
class(t) :: y(size(x(1)%bar))
type(t) :: z(size(x(1)%bar))
end
function g (x) result(z)
class(t) :: x(:)
type(t) :: z(size(x(1)%bar))
end
subroutine s ()
class(t2), allocatable :: a(:), b(:), c(:), d(:)
class(t2), pointer :: p(:)
c(1)%my = f (a(1)%my, b(1)%my)
d(1)%my = g (p(1)%my)
end
end
! Contributed by G. Steinmetz:
! PR fortran/104430
module m
type t
integer :: a
end type
contains
function f(x) result(z)
class(t) :: x(:)
type(t) :: z(size(x%a))
z%a = 42
end
end
program p
use m
class(t), allocatable :: y(:), z(:)
allocate (y(32))
z = f(y)
if (size(z) /= 32) stop 1
if (any (z%a /= 42)) stop 2
end