! RUN: %python %S/test_errors.py %s %flang_fc1 ! C911 - abstract derived type can be used only when polymorphic program test type, abstract :: abstract integer :: j end type type, extends(abstract) :: concrete integer :: k class(concrete), allocatable :: a(:) end type type(concrete) :: x(2) call sub1(x(1)) ! ok call sub2(x) ! ok call sub1(x(1)%a(1)) ! ok call sub2(x(1)%a) ! ok !ERROR: Reference to object with abstract derived type 'abstract' must be polymorphic call sub1(x(1)%abstract) ! bad !ERROR: Reference to object with abstract derived type 'abstract' must be polymorphic call sub2(x%abstract) ! bad !ERROR: Reference to object with abstract derived type 'abstract' must be polymorphic call sub1(x(1)%a(1)%abstract) ! bad !ERROR: Reference to object with abstract derived type 'abstract' must be polymorphic call sub2(x(1)%a%abstract) ! bad contains subroutine sub1(d) class(abstract) d end subroutine subroutine sub2(d) class(abstract) d(:) end subroutine end