llvm-project/flang/test/Semantics/transfer01.f90
Peter Klausler 191d48723f
[flang] Finer control over warnings
Establish a set of optional usage warnings, and enable some
only in "-pedantic" mode that, in our subjective experience
with application codes, seem to issue frequently without
indicating usage that really needs to be corrected.  By default,
with this patch the compiler should appear to be somewhat less
persnickety but not less informative.

Differential Revision: https://reviews.llvm.org/D150710
2023-05-16 13:56:24 -07:00

37 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