! { dg-do compile } ! PR fortran/88072 ! Original code contributed by Andrew Wood module m1 implicit none type, abstract, public :: t1 integer, dimension(:), allocatable :: i contains procedure(f1), deferred :: f end type t1 type, extends(t1), public :: t2 ! { dg-error "must be ABSTRACT because" } contains procedure :: f => f2 ! { dg-error "mismatch for the overriding" } end type t2 abstract interface function f1(this) ! { dg-error "must be dummy, allocatable or" } import class(t1) :: this class(t1) :: f1 end function f1 end interface contains type(t2) function f2(this) class(t2) :: this end function f2 end module m1