blob: e102a97a5755e23989a9052a4cee44866f6a4425 [file] [log] [blame]
! { dg-do compile }
! PR 23843
! IO of derived types with private components is allowed in the module itself,
! but not elsewhere
module gfortran2
type :: tp1
private
integer :: i
end type tp1
type :: tp1b
integer :: i
end type tp1b
type :: tp2
real :: a
type(tp1) :: t
end type tp2
contains
subroutine test()
type(tp1) :: x
type(tp2) :: y
write (*, *) x
write (*, *) y
end subroutine test
end module gfortran2
program prog
use gfortran2
implicit none
type :: tp3
type(tp2) :: t
end type tp3
type :: tp3b
type(tp1b) :: t
end type tp3b
type(tp1) :: x
type(tp2) :: y
type(tp3) :: z
type(tp3b) :: zb
write (*, *) x ! { dg-error "PRIVATE components" }
write (*, *) y ! { dg-error "PRIVATE components" }
write (*, *) z ! { dg-error "PRIVATE components" }
write (*, *) zb
end program prog