! RUN: %python %S/test_errors.py %s %flang_fc1 module m type base procedure(baseSub), pointer :: baseComponent end type type, extends(base) :: extended end type contains subroutine baseSub(x) class(base), intent(in) :: x end subroutine extendedSub(x) class(extended), intent(in) :: x end subroutine baseSubmono(x) type(base), intent(in) :: x end subroutine test procedure(baseSub), pointer :: basePtr procedure(extendedSub), pointer :: extendedPtr type(extended) :: extendedVar extendedPtr => baseSub ! ok extendedPtr => basePtr ! ok extendedVar = extended(baseSub) ! ok extendedVar = extended(basePtr) ! ok !ERROR: Procedure pointer 'baseptr' associated with incompatible procedure designator 'extendedsub': incompatible dummy argument #1: incompatible dummy data object types: CLASS(extended) vs CLASS(base) basePtr => extendedSub !ERROR: Procedure pointer 'baseptr' associated with incompatible procedure designator 'extendedptr': incompatible dummy argument #1: incompatible dummy data object types: CLASS(extended) vs CLASS(base) basePtr => extendedPtr !ERROR: Procedure pointer 'basecomponent' associated with incompatible procedure designator 'extendedsub': incompatible dummy argument #1: incompatible dummy data object types: CLASS(extended) vs CLASS(base) extendedVar = extended(extendedSub) !ERROR: Procedure pointer 'basecomponent' associated with incompatible procedure designator 'extendedptr': incompatible dummy argument #1: incompatible dummy data object types: CLASS(extended) vs CLASS(base) extendedVar = extended(extendedPtr) !ERROR: Procedure pointer 'baseptr' associated with incompatible procedure designator 'basesubmono': incompatible dummy argument #1: incompatible dummy data object polymorphism: base vs CLASS(base) basePtr => baseSubmono end end