blob: 77d48ba61f5a73440225f3c1cf420aa9d0abdcdf [file] [log] [blame]
! { dg-do compile }
!
! PR 43207: [OOP] invalid (pointer) assignment to and from abstract non-polymorphic expressions
!
! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
implicit none
type, abstract :: parent
integer :: i
end type
type, extends(parent) :: child
class(parent), pointer :: comp
end type
type(child), target :: c1
class(child), allocatable :: c2
class(parent), pointer :: cp
c1%parent = c1%parent ! { dg-error "Nonpolymorphic reference to abstract type" }
c2%parent = c1%parent ! { dg-error "Nonpolymorphic reference to abstract type" }
cp => c1%comp
cp => c1%parent ! { dg-error "Nonpolymorphic reference to abstract type" }
call sub(c1%comp)
call sub(c1%parent) ! { dg-error "Nonpolymorphic reference to abstract type" }
contains
subroutine sub(arg)
class(parent) :: arg
end subroutine
end