! { dg-do run } ! ! Test that pr72832 is fixed now. ! Contributed by Daan van Vugt program allocate_source type :: t integer :: i end type t type, extends(t) :: tt end type tt call test_type() call test_class() contains subroutine test_class() class(t), allocatable, dimension(:) :: a, b allocate(tt::a(1:2)) a(:)%i = [ 1,2 ] if (size(a) /= 2) STOP 1 if (any(a(:)%i /= [ 1,2])) STOP 2 allocate(b(1:4), source=a) ! b is incorrectly initialized here. This only is diagnosed when compiled ! with -fcheck=bounds. if (size(b) /= 4) STOP 3 if (any(b(1:2)%i /= [ 1,2])) STOP 4 select type (b1 => b(1)) class is (tt) continue class default STOP 5 end select end subroutine subroutine test_type() type(t), allocatable, dimension(:) :: a, b allocate(a(1:2)) if (size(a) /= 2) STOP 6 allocate(b(1:4), source=a) if (size(b) /= 4) STOP 7 end subroutine end program allocate_source