1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
! 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
|