1036701a1SPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1 2036701a1SPeter Klauslermodule m 3036701a1SPeter Klausler type base 4036701a1SPeter Klausler procedure(baseSub), pointer :: baseComponent 5036701a1SPeter Klausler end type 6036701a1SPeter Klausler type, extends(base) :: extended 7036701a1SPeter Klausler end type 8036701a1SPeter Klausler contains 9036701a1SPeter Klausler subroutine baseSub(x) 10036701a1SPeter Klausler class(base), intent(in) :: x 11036701a1SPeter Klausler end 12036701a1SPeter Klausler subroutine extendedSub(x) 13036701a1SPeter Klausler class(extended), intent(in) :: x 14036701a1SPeter Klausler end 15*f7e43041SPeter Klausler subroutine baseSubmono(x) 16*f7e43041SPeter Klausler type(base), intent(in) :: x 17*f7e43041SPeter Klausler end 18036701a1SPeter Klausler subroutine test 19036701a1SPeter Klausler procedure(baseSub), pointer :: basePtr 20036701a1SPeter Klausler procedure(extendedSub), pointer :: extendedPtr 21036701a1SPeter Klausler type(extended) :: extendedVar 22036701a1SPeter Klausler extendedPtr => baseSub ! ok 23036701a1SPeter Klausler extendedPtr => basePtr ! ok 24036701a1SPeter Klausler extendedVar = extended(baseSub) ! ok 25036701a1SPeter Klausler extendedVar = extended(basePtr) ! ok 26036701a1SPeter Klausler !ERROR: Procedure pointer 'baseptr' associated with incompatible procedure designator 'extendedsub': incompatible dummy argument #1: incompatible dummy data object types: CLASS(extended) vs CLASS(base) 27036701a1SPeter Klausler basePtr => extendedSub 28036701a1SPeter Klausler !ERROR: Procedure pointer 'baseptr' associated with incompatible procedure designator 'extendedptr': incompatible dummy argument #1: incompatible dummy data object types: CLASS(extended) vs CLASS(base) 29036701a1SPeter Klausler basePtr => extendedPtr 30036701a1SPeter Klausler !ERROR: Procedure pointer 'basecomponent' associated with incompatible procedure designator 'extendedsub': incompatible dummy argument #1: incompatible dummy data object types: CLASS(extended) vs CLASS(base) 31036701a1SPeter Klausler extendedVar = extended(extendedSub) 32036701a1SPeter Klausler !ERROR: Procedure pointer 'basecomponent' associated with incompatible procedure designator 'extendedptr': incompatible dummy argument #1: incompatible dummy data object types: CLASS(extended) vs CLASS(base) 33036701a1SPeter Klausler extendedVar = extended(extendedPtr) 34*f7e43041SPeter Klausler !ERROR: Procedure pointer 'baseptr' associated with incompatible procedure designator 'basesubmono': incompatible dummy argument #1: incompatible dummy data object polymorphism: base vs CLASS(base) 35*f7e43041SPeter Klausler basePtr => baseSubmono 36036701a1SPeter Klausler end 37036701a1SPeter Klauslerend 38