print_fmt_5.f90   [plain text]


! { dg-do compile }
! print_fmt_5.f90
! Test of fix for PR28237 and the last bit of PR23420.  See
! below for the description of the problem.
!
program r
  character(12) :: for = '(i5)', left = '(i', right = ')'
  integer :: i, j
  integer :: h(4) &
    = (/1h(, 1hi, 1h5, 1h)/)! { dg-warning "HOLLERITH|Hollerith" }
  namelist /mynml/ i
  i = fact ()
!
! All these are "legal" things to do; note however the warnings
! for extensions or obsolete features!
!
  print *, fact()
  print 100, fact()
  print '(i5)', fact()
  print mynml      ! { dg-warning "is an extension" }
  do i = 1, 5
    print trim(left)//char(iachar('0') + i)//trim(right), i
  end do
  assign 100 to i  ! { dg-warning "ASSIGN statement" }
  print i, fact()  ! { dg-warning "ASSIGNED variable" }
  print h, fact () ! { dg-warning "Non-character in FORMAT" }
!
! These are not and caused a segfault in trans-io:560
!
! PR28237
  print fact()     ! { dg-error "not an ASSIGNED variable" }
! original PR23420
  print precision(1.2_8) ! { dg-error "type default CHARACTER" }
! PR23420 points 4 and 5
  print j + j      ! { dg-error "not an ASSIGNED variable" }
! An extension of the above, encountered in writing the fix
  write (*, fact())! { dg-error "not an ASSIGNED variable" }
 100 format (i5)
contains
  function fact()
    integer :: fact
    fact = 1
  end function fact
end