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