Peter Klausler faa1338ccd [flang] Check constraint C834 on INTENT(OUT) assumed-size dummy arrays
An assumed-size dummy array argument with INTENT(OUT) can't have a type
that might require any runtime (re)initialization, since the size of the
array is not known.

Differential Revision: https://reviews.llvm.org/D139149
2022-12-04 10:38:42 -08:00

39 lines
1.3 KiB
Fortran

! RUN: %python %S/test_errors.py %s %flang_fc1
module m
type t1
integer, allocatable :: a(:)
end type
type t2
integer :: n = 123
end type
type t3
contains
final :: t3final
end type
type t4
type(t1) :: c1
type(t2) :: c2
type(t3) :: c3
end type
type t5
end type
contains
elemental subroutine t3final(x)
type(t3), intent(in) :: x
end subroutine
subroutine test1(x1,x2,x3,x4,x5)
!ERROR: An INTENT(OUT) assumed-size dummy argument array may not have a derived type with any default component initialization
type(t1), intent(out) :: x1(*)
!ERROR: An INTENT(OUT) assumed-size dummy argument array may not have a derived type with any default component initialization
type(t2), intent(out) :: x2(*)
!ERROR: An INTENT(OUT) assumed-size dummy argument array may not be finalizable
type(t3), intent(out) :: x3(*)
!ERROR: An INTENT(OUT) assumed-size dummy argument array may not have a derived type with any default component initialization
!ERROR: An INTENT(OUT) assumed-size dummy argument array may not be finalizable
type(t4), intent(out) :: x4(*)
!ERROR: An INTENT(OUT) assumed-size dummy argument array may not be polymorphic
class(t5), intent(out) :: x5(*)
end subroutine
end module