https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78737
Paul Thomas <pault at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |pault at gcc dot gnu.org --- Comment #12 from Paul Thomas <pault at gcc dot gnu.org> --- Created attachment 40305 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40305&action=edit Patch for the PR That attachment appears to fix the testcases of comments #6 and #9. This check of comment #6 runs OK: module object_interface type, abstract :: object contains procedure(write_formatted_interface), deferred :: write_formatted generic :: write(formatted) => write_formatted end type abstract interface subroutine write_formatted_interface(this,unit,iotype,vlist,iostat,iomsg) import object class(object), intent(in) :: this integer, intent(in) :: unit character (len=*), intent(in) :: iotype integer, intent(in) :: vlist(:) integer, intent(out) :: iostat character (len=*), intent(inout) :: iomsg end subroutine end interface type, extends(object) :: non_abstract_child integer :: i contains procedure :: write_formatted end type contains subroutine write_formatted(this,unit,iotype,vlist,iostat,iomsg) class(non_abstract_child), intent(in) :: this integer, intent(in) :: unit character (len=*), intent(in) :: iotype integer, intent(in) :: vlist(:) integer, intent(out) :: iostat character (len=*), intent(inout) :: iomsg select type (this) class is (non_abstract_child) print *, this%i class default print *, "Error" end select end subroutine subroutine assert(a) class(object):: a write(*,*) a end subroutine end module use object_interface class (object), allocatable :: z allocate (z, source = non_abstract_child (99)) call assert (z) end The patch bootstraps and regtests OK. Will submit tomorrow. Paul