aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2009-10-12 00:54:11 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2009-10-12 00:54:11 +0000
commit420bc2e7aaf96b0da5e89857f7edc08fa45a1f36 (patch)
treefa52ec588ba282f640e1698a2dcec230cf7153e5
parenta30595bf4307163e07024b776fa7c8e184962298 (diff)
downloadgcc-420bc2e7aaf96b0da5e89857f7edc08fa45a1f36.zip
gcc-420bc2e7aaf96b0da5e89857f7edc08fa45a1f36.tar.gz
gcc-420bc2e7aaf96b0da5e89857f7edc08fa45a1f36.tar.bz2
re PR fortran/38439 (I/O PD edit descriptor inconsistency)
2009-10-11 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libgfortran/38439 * gfortran.dg/fmt_error_9.f: New test. * gfortran.dg/fmt_error_10.f: New test. From-SVN: r152658
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_error_10.f29
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_error_9.f25
3 files changed, 60 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a7b18d0..4865c0d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/38439
+ * gfortran.dg/fmt_error_9.f: New test.
+ * gfortran.dg/fmt_error_10.f: New test.
+
2009-10-11 Paul Thomas <pault@gcc.gnu.org>
PR fortran/41583
diff --git a/gcc/testsuite/gfortran.dg/fmt_error_10.f b/gcc/testsuite/gfortran.dg/fmt_error_10.f
new file mode 100644
index 0000000..c2a9117
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/fmt_error_10.f
@@ -0,0 +1,29 @@
+! { dg-do run }
+! { dg-options "-std=legacy" }
+! PR38439 I/O PD edit descriptor inconsistency
+! Test case prepared by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+ character(len=25) :: str
+ character(len=132) :: msg, line
+ str = '(1pd24.15e6)'
+ line = "initial string"
+ x = 555.25
+
+ write (line,str,iostat=istat, iomsg=msg) 1.0d0, 1.234
+ if (istat.ne.0) call abort
+ if (line.ne." 1.000000000000000D+001.E+00") call abort
+
+ write (line,'(1pd24.15e6)',iostat=istat, iomsg=msg) 1.0d0, 1.234 ! { dg-warning "Period required" }
+ if (istat.ne.0) call abort
+ if (line.ne." 1.000000000000000D+001.E+00") call abort
+
+ str = '(1pd0.15)'
+ write (line,str,iostat=istat, iomsg=msg) 1.0d0
+ if (istat.ne.5006 .or. msg(1:15).ne."Positive width ") call abort
+ read (*,str,iostat=istat, iomsg=msg) x
+ if (istat.ne.5006 .or. msg(1:15).ne."Positive width ") call abort
+ if (x.ne.555.25) call abort
+
+ write (line,'(1pd24.15e11.3)') 1.0d0, 1.234
+ if (line.ne." 1.000000000000000D+00 1.234E+00") call abort
+
+ end
diff --git a/gcc/testsuite/gfortran.dg/fmt_error_9.f b/gcc/testsuite/gfortran.dg/fmt_error_9.f
new file mode 100644
index 0000000..0f2b63b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/fmt_error_9.f
@@ -0,0 +1,25 @@
+! { dg-do run }
+! { dg-options "-std=gnu" }
+! PR38439 I/O PD edit descriptor inconsistency
+! Test case prepared by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+ character(len=25) :: str
+ character(len=132) :: msg, line
+ str = '(1pd24.15e6)'
+ line = "initial string"
+ x = 555.25
+
+ write (line,str,iostat=istat, iomsg=msg) 1.0d0, 1.234
+ if (istat.ne.5006 .or. msg(1:15).ne."Period required") call abort
+ if (line.ne."initial string") call abort
+
+ str = '(1pf0.15)'
+ write (line,str,iostat=istat, iomsg=msg) 1.0d0
+ if (istat.ne.0) call abort
+ read (*,str,iostat=istat, iomsg=msg) x
+ if (istat.ne.5006 .or. msg(1:15).ne."Positive width ") call abort
+ if (x.ne.555.25) call abort
+
+ write (line,'(1pd24.15e11.3)') 1.0d0, 1.234
+ if (line.ne." 1.000000000000000D+00 1.234E+00") call abort
+
+ end