diff gcc/testsuite/gfortran.dg/read_eof_all.f90 @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gfortran.dg/read_eof_all.f90	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,71 @@
+! { dg-do run }
+! PR43265 Followup patch for miscellaneous EOF conditions.
+! Eaxamples from Tobius Burnus 
+  use iso_fortran_env
+  character(len=2) :: str, str2(2)
+  integer :: a, b, c, ios
+  str = ''
+  str2 = ''
+
+  open(99,file='test.dat',access='stream',form='unformatted', status='replace')
+  write(99) ' '
+  close(99)
+ 
+  open(99,file='test.dat')
+  read(99, '(T7,i2)') i
+  close(99, status="delete")
+  if (i /= 0) call abort
+
+  read(str(1:0), '(T7,i1)') i
+  if (i /= 0) call abort
+
+  read(str,'(i2,/,i2)',end=111) a, b
+  call abort !stop 'ERROR: Expected EOF error (1)'
+  111 continue
+
+  read(str2,'(i2,/,i2)',end=112) a, b
+
+  read(str2,'(i2,/,i2,/,i2)',end=113) a, b, c
+  call abort !stop 'ERROR: Expected EOF error (2)'
+
+  112 call abort !stop 'ERROR: Unexpected EOF (3)'
+
+  113 continue
+  read(str,'(i2,/,i2)',end=121,pad='no') a, b
+  call abort !stop 'ERROR: Expected EOF error (1)'
+  121 continue
+
+  read(str2(:),'(i2,/,i2)', end=122, pad='no') a, b
+  goto 125
+  122 call abort !stop 'ERROR: Expected no EOF error (2)'
+  125 continue
+
+  read(str2(:),'(i2,/,i2,/,i2)',end=123,pad='no') a, b, c
+  call abort !stop 'ERROR: Expected EOF error (3)'
+  123 continue
+
+  read(str(2:1),'(i2,/,i2)',end=131, pad='no') a, b
+  call abort !stop 'ERROR: Expected EOF error (1)'
+  131 continue
+
+  read(str2(:)(2:1),'(i2,/,i2)',end=132, pad='no') a, b
+  call abort !stop 'ERROR: Expected EOF error (2)'
+  132 continue
+
+  read(str2(:)(2:1),'(i2,/,i2,/,i2)',end=133,pad='no') a, b, c
+  call abort !stop 'ERROR: Expected EOF error (3)'
+  133 continue
+
+  read(str(2:1),'(i2,/,i2)',iostat=ios, pad='no') a, b
+  if (ios /= IOSTAT_END) call abort !stop 'ERROR: expected iostat /= 0  (1)'
+
+  read(str2(:)(2:1),'(i2,/,i2)',iostat=ios, pad='no') a, b
+  if (ios /= IOSTAT_END) call  abort !stop 'ERROR: expected iostat /= 0  (2)'
+
+  read(str2(:)(2:1),'(i2,/,i2,/,i2)',iostat=ios,pad='no') a, b, c
+  if (ios /= IOSTAT_END) call abort !stop 'ERROR: expected iostat /= 0  (2)'
+
+  ! print *, "success"
+  end
+
+