! { dg-do compile } ! ! PR 82257: ICE in gfc_typename(), compare_rank(), resolve_structure_cons() module m1 implicit none type,abstract :: c_base contains procedure(i1),private,deferred :: f_base end type c_base abstract interface function i1(this) result(res) import class(c_base),intent(IN) :: this class(c_base), pointer :: res end function i1 end interface type,abstract,extends(c_base) :: c_derived contains procedure :: f_base => f_derived ! { dg-error "Type mismatch in function result" } end type c_derived contains function f_derived(this) result(res) ! { dg-error "must be dummy, allocatable or pointer" } class(c_derived), intent(IN) :: this class(*) :: res end function f_derived end module m1 module m2 implicit none type :: t contains procedure :: p end type t contains class(*) function p(this) ! { dg-error "must be dummy, allocatable or pointer" } class(t), intent(IN) :: this end function p end module m2