OSDN Git Service

2006-04-12 Jerry DeLisle <jvdelisle@gcc.gnu.org>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 13 Apr 2006 06:30:04 +0000 (06:30 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 13 Apr 2006 06:30:04 +0000 (06:30 +0000)
PR libgfortran/26766
* gfortran.dg/write_recursive.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112915 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 565b64e..758f363 100644 (file)
@@ -1,3 +1,8 @@
+2006-04-12  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/26766
+       * gfortran.dg/write_recursive.f90: New test.
+
 2006-04-11  Mark Mitchell  <mark@codesourcery.com>
 
        * g++.dg/parse/dtor7.C: New test.
diff --git a/gcc/testsuite/gfortran.dg/write_recursive.f90 b/gcc/testsuite/gfortran.dg/write_recursive.f90
new file mode 100644 (file)
index 0000000..20014ab
--- /dev/null
@@ -0,0 +1,39 @@
+! { dg-do run }
+! PR26766 Recursive I/O with internal units
+! Test case derived from example in PR
+! Submitted by Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+program pr26766
+  implicit none
+  character (len=8) :: str, tmp
+  write (str, '(a)')  bar (1234)
+  if (str.ne."abcd") call abort()
+  str = "wxyz"
+  write (str, '(2a4)') foo (1), bar (1)
+  if (str.ne."abcdabcd") call abort()
+
+contains
+
+  function foo (i) result (s)
+    integer, intent(in) :: i
+    character (len=4)   :: s, t
+    if (i < 0) then
+       s = "1234"
+    else
+       ! Internal I/O, allowed recursive in f2003, see section 9.11
+       write (s, '(a)') "abcd"
+    end if
+  end function foo
+  
+  function bar (i) result (s)
+    integer, intent(in) :: i
+    character (len=4)   :: s, t
+    if (i < 0) then
+      s = "4567"
+    else
+      write (s, '(a)') foo(i)
+    end if
+  end function bar
+
+end program pr26766
+
+