brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 2e65829 Raw
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