namelist_use_2.msg
authorPaul Thomas <pault@gcc.gnu.org>
Tue, 21 Jun 2005 20:53:00 +0000 (20:53 +0000)
committerPaul Thomas <pault@gcc.gnu.org>
Tue, 21 Jun 2005 20:53:00 +0000 (20:53 +0000)
From-SVN: r101234

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/namelist_use.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/namelist_use_only.f90 [new file with mode: 0644]

index b8c7927dae02ce8a193196a54de2b65b8f300461..293bb29dbba2a5adb4c2d751940f74cbdd09fab8 100644 (file)
@@ -1,3 +1,9 @@
+2005-06-21  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/22010
+       * gfortran.dg/namelist_use.f90: New.
+       * gfortran.dg/namelist_use_only.f90: New.
+
 2005-06-21  Jeff Law  <law@redhat.com>
 
        * gcc.dg/tree-ssa/vrp15.c: New test.
diff --git a/gcc/testsuite/gfortran.dg/namelist_use.f90 b/gcc/testsuite/gfortran.dg/namelist_use.f90
new file mode 100644 (file)
index 0000000..bbbb178
--- /dev/null
@@ -0,0 +1,30 @@
+! { dg-do run }
+! This tests the fix for PR22010, where namelists were not being written to
+! and read back from modules.  It has two namelists: one that is USE
+! associated and another that is concatenated by USE and host association.
+!
+! Contributed by Paul Thomas  pault@gcc.gnu.org
+!
+module global
+  character*4 :: aa
+  integer :: ii
+  real    :: rr
+  namelist /nml1/ aa, ii, rr
+  namelist /nml2/ aa
+end module global
+program namelist_use
+  use global
+  real    :: rrr
+  namelist /nml2/ ii, rrr    ! Concatenate use and host associated variables.
+  open (10, status="scratch")
+  write (10,*) "&NML1 aa=lmno ii=1 rr=2.5 /"
+  write (10,*) "&NML2 aa=pqrs ii=2 rrr=3.5 /"
+  rewind (10)
+  read (10,nml=nml1,iostat=i)
+  if ((i.ne.0).or.(aa.ne."lmno").or.(ii.ne.1).or.(rr.ne.2.5)) call abort ()
+
+  read (10,nml=nml2,iostat=i) 
+  if ((i.ne.0).or.(aa.ne."pqrs").or.(ii.ne.2).or.(rrr.ne.3.5)) call abort ()
+
+  close (10)
+end program namelist_use
diff --git a/gcc/testsuite/gfortran.dg/namelist_use_only.f90 b/gcc/testsuite/gfortran.dg/namelist_use_only.f90
new file mode 100644 (file)
index 0000000..f7a948c
--- /dev/null
@@ -0,0 +1,34 @@
+! { dg-do run }
+! This tests the fix for PR22010, where namelists were not being written to
+! and read back from modules.  It checks that namelists from modules that are
+! selected by an ONLY declaration work correctly, even when the variables in
+! the namelist are not host associated. Note that renaming a namelist by USE
+! association is not allowed by the standard and this is trapped in module.c.
+!
+! Contributed by Paul Thomas  pault@gcc.gnu.org
+!
+module global
+  character*4 :: aa, aaa
+  integer :: ii, iii
+  real    :: rr, rrr
+  namelist /nml1/ aa, ii, rr
+  namelist /nml2/ aaa, iii, rrr
+contains
+  logical function foo()
+    foo = (aaa.ne."pqrs").or.(iii.ne.2).or.(rrr.ne.3.5)
+  end function foo
+end module global
+program namelist_use_only
+  use global, only : nml1, aa, ii, rr
+  use global, only : nml2, rrrr=>rrr, foo
+  open (10, status="scratch")
+  write (10,*) "&NML1 aa=lmno ii=1 rr=2.5 /"
+  write (10,*) "&NML2 aaa=pqrs iii=2 rrr=3.5 /"
+  rewind (10)
+  read (10,nml=nml1,iostat=i)
+  if ((i.ne.0).or.(aa.ne."lmno").or.(ii.ne.1).or.(rr.ne.2.5)) call abort ()
+
+  read (10,nml=nml2,iostat=i) 
+  if ((i.ne.0).or.(rrrr.ne.3.5).or.foo()) call abort ()
+  close (10)
+end program namelist_use_only