blob: a97cf5ad88b082531ed260f289fc6ef579fd7e5c [file] [log] [blame]
! RUN: %python %S/test_errors.py %s %flang_fc1
! Check for semantic errors in ALLOCATE statements
program allocate14
integer, allocatable :: i1, i2
character(200), allocatable :: msg1, msg2
type t
integer, allocatable :: i
character(10), allocatable :: msg
end type t
type(t) :: tt(2)
type(t), allocatable :: ts(:)
allocate(i1)
allocate(msg1)
allocate(i2, stat=i1, errmsg=msg1)
allocate(msg2, stat=i1, errmsg=msg1)
deallocate(i2, stat=i1, errmsg=msg1)
deallocate(msg2, stat=i1, errmsg=msg1)
!ERROR: STAT variable in ALLOCATE must not be the variable being allocated
allocate(i2, stat=i2, errmsg=msg2)
!ERROR: ERRMSG variable in ALLOCATE must not be the variable being allocated
allocate(msg2, stat=i2, errmsg=msg2)
!ERROR: STAT variable in DEALLOCATE must not be the variable being deallocated
deallocate(i2, stat=i2, errmsg=msg2)
!ERROR: ERRMSG variable in DEALLOCATE must not be the variable being deallocated
deallocate(msg2, stat=i2, errmsg=msg2)
allocate(tt(1)%i)
allocate(tt(1)%msg)
allocate(tt(2)%i, stat=tt(1)%i, errmsg=tt(1)%msg)
allocate(tt(2)%msg, stat=tt(1)%i, errmsg=tt(1)%msg)
deallocate(tt(2)%i, stat=tt(1)%i, errmsg=tt(1)%msg)
deallocate(tt(2)%msg, stat=tt(1)%i, errmsg=tt(1)%msg)
!ERROR: STAT variable in ALLOCATE must not be the variable being allocated
allocate(tt(2)%i, stat=tt(2)%i, errmsg=tt(2)%msg)
!ERROR: ERRMSG variable in ALLOCATE must not be the variable being allocated
allocate(tt(2)%msg, stat=tt(2)%i, errmsg=tt(2)%msg)
!ERROR: STAT variable in DEALLOCATE must not be the variable being deallocated
deallocate(tt(2)%i, stat=tt(2)%i, errmsg=tt(2)%msg)
!ERROR: ERRMSG variable in DEALLOCATE must not be the variable being deallocated
deallocate(tt(2)%msg, stat=tt(2)%i, errmsg=tt(2)%msg)
!TODO: STAT variable in ALLOCATE must not be the variable being allocated
!TODO: ERRMSG variable in ALLOCATE must not be the variable being allocated
allocate(ts(10), stat=ts(1)%i, errmsg=ts(1)%msg)
!TODO: STAT variable in DEALLOCATE must not be the variable being deallocated
!TODO: ERRMSG variable in DEALLOCATE must not be the variable being deallocated
deallocate(ts, stat=ts(1)%i, errmsg=ts(1)%msg)
end program