brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 85898a1 Raw
38 lines · plain
1! RUN: %python %S/test_errors.py %s %flang_fc12module m3  type base4    procedure(baseSub), pointer :: baseComponent5  end type6  type, extends(base) :: extended7  end type8 contains9  subroutine baseSub(x)10    class(base), intent(in) :: x11  end12  subroutine extendedSub(x)13    class(extended), intent(in) :: x14  end15  subroutine baseSubmono(x)16    type(base), intent(in) :: x17  end18  subroutine test19    procedure(baseSub), pointer :: basePtr20    procedure(extendedSub), pointer :: extendedPtr21    type(extended) :: extendedVar22    extendedPtr => baseSub ! ok23    extendedPtr => basePtr ! ok24    extendedVar = extended(baseSub) ! ok25    extendedVar = extended(basePtr) ! ok26    !ERROR: Procedure pointer 'baseptr' associated with incompatible procedure designator 'extendedsub': incompatible dummy argument #1: incompatible dummy data object types: CLASS(extended) vs CLASS(base)27    basePtr => extendedSub28    !ERROR: Procedure pointer 'baseptr' associated with incompatible procedure designator 'extendedptr': incompatible dummy argument #1: incompatible dummy data object types: CLASS(extended) vs CLASS(base)29    basePtr => extendedPtr30    !ERROR: Procedure pointer 'basecomponent' associated with incompatible procedure designator 'extendedsub': incompatible dummy argument #1: incompatible dummy data object types: CLASS(extended) vs CLASS(base)31    extendedVar = extended(extendedSub)32    !ERROR: Procedure pointer 'basecomponent' associated with incompatible procedure designator 'extendedptr': incompatible dummy argument #1: incompatible dummy data object types: CLASS(extended) vs CLASS(base)33    extendedVar = extended(extendedPtr)34    !ERROR: Procedure pointer 'baseptr' associated with incompatible procedure designator 'basesubmono': incompatible dummy argument #1: incompatible dummy data object polymorphism: base vs CLASS(base)35    basePtr => baseSubmono36  end37end38