1! { dg-do compile }
2!
3! PR fortran/51378
4!
5! Allow constructor to nonprivate parent compoents,
6! even if the extension specified PRIVATE for its own components
7!
8! Contributed by Reinhold Bader
9!
10module type_ext
11  type :: vec
12     real, dimension(3) :: comp
13     integer :: len
14  end type vec
15  type, extends(vec) :: l_vec
16     private
17     character(len=20) :: label = '01234567890123456789'
18  end type l_vec
19end module type_ext
20program test_ext
21  use type_ext
22  implicit none
23  type(vec) :: o_vec, oo_vec
24  type(l_vec) :: o_l_vec
25  integer :: i
26!
27  o_vec = vec((/1.0, 2.0, 3.0/),3)
28!  write(*,*) o_vec%comp, o_vec%len
29  o_l_vec = l_vec(comp=(/1.0, 2.0, 3.0/),len=3)
30! partial constr. not accepted by ifort 11.1, fixed in 12.0 (issue 562240)
31!  write(*,*) o_l_vec%comp, o_l_vec%len
32!  write(*,*) o_l_vec%vec
33  oo_vec = o_l_vec%vec
34  do i=1, 3
35    if (abs(oo_vec%comp(i) - o_vec%comp(i)) > 1.0E-5) then
36       write(*, *) 'FAIL'
37       stop
38    end if
39  end do
40  write(*, *) 'OK'
41end program
42