https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78737

--- Comment #5 from janus at gcc dot gnu.org ---
(In reply to janus from comment #4)
> Looking at the dump, one probably needs a polymorphic reference to
> 'a->_vptr->write_formatted' instead of using the interface?

Btw, such wrong-code behavior is also seen in the non-abstract version:


module object_interface
  type :: object
  contains
    procedure :: write_formatted
    generic :: write(formatted) => write_formatted
  end type
contains
  subroutine write_formatted(this,unit,iotype,vlist,iostat,iomsg)
    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

  subroutine assert(a)
    class(object):: a
    write(*,*) a
  end subroutine
end module

end


If the write procedure is overwritten in an extended type, then the write
statement still calls the one from the base class, which is wrong.

Reply via email to