From e60c935b0e1999870e2244491b61017aa4cffa27 Mon Sep 17 00:00:00 2001 From: "Steven G. Kargl" Date: Sat, 11 Jan 2014 21:38:30 +0000 Subject: [PATCH] re PR fortran/59700 (Misleading/buggy runtime error message: Bad integer for item 0 in list input) 2014-01-11 Steven G. Kargl PR fortran/59700 * gfortran.dg/pr59700.f90: New test. From-SVN: r206559 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/pr59700.f90 | 40 +++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/pr59700.f90 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c95790f..3f33d76 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-01-11 Steven G. Kargl + + PR fortran/59700 + * gfortran.dg/pr59700.f90: New test. + 2014-01-11 Dominique d'Humieres * gfortran.dg/binding_label_tests_10_main.f03: Cleanup mod file. diff --git a/gcc/testsuite/gfortran.dg/pr59700.f90 b/gcc/testsuite/gfortran.dg/pr59700.f90 new file mode 100644 index 0000000..579d8a4 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr59700.f90 @@ -0,0 +1,40 @@ +! { dg-do run } +! PR59700 Test case by Steve Kargl +program foo + + implicit none + + character(len=80) msg + integer, parameter :: fd = 10 + integer i1, i2, i3, i4 + real x1, x2, x3, x4 + complex c1, c2 + logical a + + open(unit=fd, status='scratch') + write(fd, '(A)') '1 2 3.4 q' + + rewind(fd) + msg = 'ok' + read(fd, *, err=10, iomsg=msg) i1, i2, i3, i4 +10 if (msg /= 'Bad integer for item 3 in list input') call abort + rewind(fd) + msg = 'ok' + read(fd, *, err=20, iomsg=msg) x1, x2, x3, x4 +20 if (msg /= 'Bad real number in item 4 of list input') call abort + rewind(fd) + msg = 'ok' + read(fd, *, err=30, iomsg=msg) i1, x2, x1, a +30 if (msg /= 'Bad logical value while reading item 4') call abort + rewind(fd) + read(fd, *, err=31, iomsg=msg) i1, x2, a, x1 +31 if (msg /= 'Bad repeat count in item 3 of list input') call abort + close(fd) + open(unit=fd, status='scratch') + write(fd, '(A)') '(1, 2) (3.4, q)' + rewind(fd) + msg = 'ok' + read(fd, *, err=40, iomsg=msg) c1, c2 +40 if (msg /= 'Bad floating point number for item 2') call abort + close(fd) +end program foo -- 2.7.4