summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/io_constraints_6.f03
blob: d0484f5f4fe1b542f18619290c251152f3ee96b6 (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
! { 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

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