47 lines · plain
1! RUN: %python %S/test_errors.py %s %flang_fc12! The RHS of a pointer assignment can be unlimited polymorphic3! if the LHS is a sequence type.4program main5 type nonSeqType6 integer j7 end type8 type seqType9 sequence10 integer j11 end type12 type(nonSeqType), target :: xNonSeq = nonSeqType(1)13 type(nonSeqType), pointer :: pNonSeq14 type(seqType), target :: xSeq = seqType(1), aSeq(1)15 type(seqType), pointer :: pSeq, paSeq(:)16 !ERROR: function result type 'CLASS(*)' is not compatible with pointer type 'nonseqtype'17 pNonSeq => polyPtr(xNonSeq)18 pSeq => polyPtr(xSeq) ! ok19 !ERROR: Pointer has rank 1 but target has rank 020 paSeq => polyPtr(xSeq)21 !ERROR: Pointer has rank 0 but target has rank 122 pSeq => polyPtrArr(aSeq)23 contains24 function polyPtr(target)25 class(*), intent(in), target :: target26 class(*), pointer :: polyPtr27 polyPtr => target28 end29 function polyPtrArr(target)30 class(*), intent(in), target :: target(:)31 class(*), pointer :: polyPtrArr(:)32 polyPtrArr => target33 end34 function err1(target)35 class(*), intent(in), target :: target(:)36 class(*), pointer :: err137 !ERROR: Pointer has rank 0 but target has rank 138 err1 => target39 end40 function err2(target)41 class(*), intent(in), target :: target42 class(*), pointer :: err2(:)43 !ERROR: Pointer has rank 1 but target has rank 044 err2 => target45 end46end47