! 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