Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gfortran.dg/extends_4.f03 @ 118:fd00160c1b76
ifdef TARGET_64BIT
author | mir3636 |
---|---|
date | Tue, 27 Feb 2018 15:01:35 +0900 |
parents | 04ced10e8804 |
children | 84e7813d76e9 |
line wrap: on
line source
! { dg-do run } ! Check that derived type extension is compatible with renaming ! the parent type and that allocatable components are OK. At ! the same time, private type and components are checked. ! ! Contributed by Paul Thomas <pault@gcc.gnu.org> ! module mymod type :: a real, allocatable :: x(:) integer, private :: ia = 0 end type a type :: b private real, allocatable :: x(:) integer :: i end type b contains function set_b () result (res) type(b) :: res allocate (res%x(2)) res%x = [10.0, 20.0] res%i = 1 end function subroutine check_b (arg) type(b) :: arg if (any (arg%x /= [10.0, 20.0])) call abort if (arg%i /= 1) call abort end subroutine end module mymod use mymod, e => a type, extends(e) :: f integer :: if end type f type, extends(b) :: d integer :: id end type d type(f) :: p type(d) :: q p = f (x = [1.0, 2.0], if = 3) if (any (p%e%x /= [1.0, 2.0])) call abort q%b = set_b () call check_b (q%b) q = d (b = set_b (), id = 99) call check_b (q%b) end