36 lines
1.5 KiB
Fortran
36 lines
1.5 KiB
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic
|
|
! Check errors in TRANSFER()
|
|
|
|
subroutine subr(o)
|
|
integer, intent(in), optional :: o
|
|
type empty
|
|
end type
|
|
type(empty) :: empty1(1)
|
|
type hasdescriptor
|
|
real, allocatable :: allocatable
|
|
end type
|
|
type(hasdescriptor) hasDesc
|
|
real :: empty2(0)
|
|
character(0) :: empty3(1)
|
|
integer, pointer :: source(:)
|
|
integer, allocatable :: ia
|
|
integer, pointer :: ip
|
|
!ERROR: Element size of MOLD= array may not be zero when SOURCE= is not empty
|
|
print *, transfer(1., empty1)
|
|
print *, transfer(1., empty2) ! ok
|
|
!ERROR: Element size of MOLD= array may not be zero when SOURCE= is not empty
|
|
print *, transfer(1., empty3)
|
|
!WARNING: Element size of MOLD= array may not be zero unless SOURCE= is empty
|
|
print *, transfer(source, empty1)
|
|
print *, transfer(source, empty2) ! ok
|
|
!WARNING: Element size of MOLD= array may not be zero unless SOURCE= is empty
|
|
print *, transfer(source, empty3)
|
|
!ERROR: SIZE= argument may not be the optional dummy argument 'o'
|
|
print *, transfer(1., empty2, size=o)
|
|
!WARNING: SIZE= argument that is allocatable or pointer must be present at execution; parenthesize to silence this warning
|
|
print *, transfer(1., empty2, size=ia)
|
|
!WARNING: SIZE= argument that is allocatable or pointer must be present at execution; parenthesize to silence this warning
|
|
print *, transfer(1., empty2, size=ip)
|
|
!WARNING: Source of TRANSFER contains allocatable or pointer component %allocatable
|
|
print *, transfer(hasDesc, 1)
|
|
end
|