llvm/flang/test/Evaluate/rewrite02.f90

! RUN: %flang_fc1 -fdebug-unparse %s 2>&1 | FileCheck %s
! Tests handling of easily-misparsed substrings and substring
! type parameter inquiries.
subroutine foo(j)
  integer, intent(in) :: j
  character*4 sc, ac(1)
  type t
    character*4 sc, ac(1)
  end type
  type(t) st, at(1)
  !CHECK: PRINT *, sc(1_8:int(j,kind=8))
  print *, sc(1:j)
  !CHECK: PRINT *, ac(1_8)(1_8:int(j,kind=8))
  print *, ac(1)(1:j)
  !CHECK: PRINT *, st%sc(1_8:int(j,kind=8))
  print *, st%sc(1:j)
  !CHECK: PRINT *, st%ac(1_8)(1_8:int(j,kind=8))
  print *, st%ac(1)(1:j)
  !CHECK: PRINT *, at(1_8)%sc(1_8:int(j,kind=8))
  print *, at(1)%sc(1:j)
  !CHECK: PRINT *, at(1_8)%ac(1_8)(1_8:int(j,kind=8))
  print *, at(1)%ac(1)(1:j)
  !CHECK: PRINT *, 1_4
  print *, sc(1:j)%kind
  !CHECK: PRINT *, 1_4
  print *, ac(1)(1:j)%kind
  !CHECK: PRINT *, 1_4
  print *, st%sc(1:j)%kind
  !CHECK: PRINT *, 1_4
  print *, st%ac(1)(1:j)%kind
  !CHECK: PRINT *, 1_4
  print *, at(1)%sc(1:j)%kind
  !CHECK: PRINT *, 1_4
  print *, at(1)%ac(1)(1:j)%kind
  !CHECK: PRINT *, int(max(0_8,int(j,kind=8)-1_8+1_8),kind=4)
  print *, sc(1:j)%len
  !CHECK: PRINT *, int(max(0_8,int(j,kind=8)-1_8+1_8),kind=4)
  print *, ac(1)(1:j)%len
  !CHECK: PRINT *, int(max(0_8,int(j,kind=8)-1_8+1_8),kind=4)
  print *, st%sc(1:j)%len
  !CHECK: PRINT *, int(max(0_8,int(j,kind=8)-1_8+1_8),kind=4)
  print *, st%ac(1)(1:j)%len
  !CHECK: PRINT *, int(max(0_8,int(j,kind=8)-1_8+1_8),kind=4)
  print *, at(1)%sc(1:j)%len
  !CHECK: PRINT *, int(max(0_8,int(j,kind=8)-1_8+1_8),kind=4)
  print *, at(1)%ac(1)(1:j)%len
end