! RUN: %python %S/test_errors.py %s %flang_fc1 ! The RHS of a pointer assignment can be unlimited polymorphic ! if the LHS is a sequence type. program main type nonSeqType integer j end type type seqType sequence integer j end type type(nonSeqType), target :: xNonSeq = nonSeqType(1) type(nonSeqType), pointer :: pNonSeq type(seqType), target :: xSeq = seqType(1), aSeq(1) type(seqType), pointer :: pSeq, paSeq(:) !ERROR: function result type 'CLASS(*)' is not compatible with pointer type 'nonseqtype' pNonSeq => polyPtr(xNonSeq) pSeq => polyPtr(xSeq) ! ok !ERROR: Pointer has rank 1 but target has rank 0 paSeq => polyPtr(xSeq) !ERROR: Pointer has rank 0 but target has rank 1 pSeq => polyPtrArr(aSeq) contains function polyPtr(target) class(*), intent(in), target :: target class(*), pointer :: polyPtr polyPtr => target end function polyPtrArr(target) class(*), intent(in), target :: target(:) class(*), pointer :: polyPtrArr(:) polyPtrArr => target end function err1(target) class(*), intent(in), target :: target(:) class(*), pointer :: err1 !ERROR: Pointer has rank 0 but target has rank 1 err1 => target end function err2(target) class(*), intent(in), target :: target class(*), pointer :: err2(:) !ERROR: Pointer has rank 1 but target has rank 0 err2 => target end end