! 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