! RUN: %python %S/test_errors.py %s %flang_fc1
! A CLASS() entity must be a dummy argument, allocatable,
! or object pointer. Don't get confused with procedure pointers.
module m
type t
end type
!ERROR: CLASS entity 'v1' must be a dummy argument, allocatable, or object pointer
class(t) v1
class(t), allocatable :: v2 ! ok
class(t), pointer :: v3 ! ok
!ERROR: CLASS entity 'p1' must be a dummy argument, allocatable, or object pointer
procedure(cf1) :: p1
procedure(cf2) :: p2
procedure(cf3) :: p3
!ERROR: CLASS entity 'pp1' must be a dummy argument, allocatable, or object pointer
procedure(cf1), pointer :: pp1
procedure(cf2), pointer :: pp2
procedure(cf3), pointer :: pp3
procedure(cf5), pointer :: pp4 ! ok
contains
!ERROR: CLASS entity 'cf1' must be a dummy argument, allocatable, or object pointer
class(t) function cf1()
end
class(t) function cf2()
allocatable cf2 ! ok
end
class(t) function cf3()
pointer cf3 ! ok
end
subroutine test(d1,d2,d3)
class(t) d1 ! ok
!ERROR: CLASS entity 'd2' must be a dummy argument, allocatable, or object pointer
class(t), external :: d2
!ERROR: CLASS entity 'd3' must be a dummy argument, allocatable, or object pointer
class(t), external, pointer :: d3
end
function cf4()
class(t), pointer :: cf4
cf4 => v3
end
function cf5
procedure(cf4), pointer :: cf5
cf5 => cf4
end
end