! { dg-do compile } ! PR fortran/45776 ! Variable definition context checks related to IO. ! Contributed by Daniel Kraft, d@domob.eu. module m implicit none integer, protected :: a character(len=128), protected :: str end module m program main use :: m integer, parameter :: b = 42 integer :: x character(len=128) :: myStr namelist /definable/ x, myStr namelist /undefinable/ x, a ! These are invalid. read (myStr, *) a ! { dg-error "variable definition context" } read (myStr, *) x, b ! { dg-error "variable definition context" } write (str, *) 5 ! { dg-error "variable definition context" } read (*, nml=undefinable) ! { dg-error "contains the symbol 'a' which may not" } ! These are ok. read (str, *) x write (myStr, *) a write (myStr, *) b print *, a, b write (*, nml=undefinable) read (*, nml=definable) write (*, nml=definable) end program main