| ! { dg-do compile } |
| ! |
| ! PR fortran/32876 - accepts private items in public NAMELISTs |
| ! |
| ! USE-associated types with private components may |
| ! not be used in namelists -- anywhere. |
| ! |
| MODULE types |
| type :: tp4 |
| PRIVATE |
| real :: x |
| integer :: i |
| end type |
| |
| ! nested type |
| type :: tp3 |
| real :: x |
| integer, private :: i |
| end type |
| |
| type :: tp2 |
| type(tp3) :: t |
| end type |
| |
| type :: tp1 |
| integer :: i |
| type(tp2) :: t |
| end type |
| END MODULE |
| |
| MODULE nml |
| USE types |
| |
| type(tp1) :: t1 |
| type(tp4) :: t4 |
| |
| namelist /a/ t1 ! { dg-error "use-associated PRIVATE components" } |
| namelist /b/ t4 ! { dg-error "use-associated PRIVATE components" } |
| |
| integer, private :: i |
| namelist /c/ i ! { dg-error "was declared PRIVATE and cannot be member of PUBLIC namelist" } |
| |
| contains |
| subroutine y() |
| type(tp2) :: y2 |
| type(tp3) :: y3 |
| |
| namelist /nml2/ y2 ! { dg-error "has use-associated PRIVATE components " } |
| namelist /nml3/ y3 ! { dg-error "has use-associated PRIVATE components " } |
| end subroutine |
| END MODULE |
| |
| |
| program xxx |
| use types |
| |
| type :: tp5 |
| TYPE(tp4) :: t ! nested private components |
| end type |
| type(tp5) :: t5 |
| |
| namelist /nml/ t5 ! { dg-error "has use-associated PRIVATE components" } |
| |
| contains |
| subroutine z() |
| namelist /nml2/ t5 ! { dg-error "has use-associated PRIVATE components" } |
| end subroutine |
| end program |