summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/der_io_2.f90
blob: 09878b690e91ec8324ec39c56df7f66849c8e072 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
! { 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

! { dg-final { cleanup-modules "gfortran2" } }