! { dg-do compile } ! ! PR 43696: [OOP] Bogus error: Passed-object dummy argument must not be POINTER ! ! Contributed by Hans-Werner Boschmann MODULE error_stack_module implicit none type,abstract::serializable_class contains procedure(ser_DTV_RF),deferred::read_formatted end type serializable_class abstract interface subroutine ser_DTV_RF(dtv,unit,iotype,v_list,iostat,iomsg) import serializable_class CLASS(serializable_class),INTENT(INOUT) :: dtv INTEGER, INTENT(IN) :: unit CHARACTER (LEN=*), INTENT(IN) :: iotype INTEGER, INTENT(IN) :: v_list(:) INTEGER, INTENT(OUT) :: iostat CHARACTER (LEN=*), INTENT(INOUT) :: iomsg end subroutine ser_DTV_RF end interface type,extends(serializable_class)::error_type class(error_type),pointer::next=>null() contains procedure::read_formatted=>error_read_formatted end type error_type contains recursive subroutine error_read_formatted(dtv,unit,iotype,v_list,iostat,iomsg) CLASS(error_type),INTENT(INOUT) :: dtv INTEGER, INTENT(IN) :: unit CHARACTER (LEN=*), INTENT(IN) :: iotype INTEGER, INTENT(IN) :: v_list(:) INTEGER, INTENT(OUT) :: iostat CHARACTER (LEN=*), INTENT(INOUT) :: iomsg character(8),allocatable::type character(8),allocatable::next call basic_read_string(unit,type) call basic_read_string(unit,next) if(next=="NEXT")then allocate(dtv%next) call dtv%next%read_formatted(unit,iotype,v_list,iostat,iomsg) end if end subroutine error_read_formatted end MODULE error_stack_module module b_module implicit none type::b_type class(not_yet_defined_type_type),pointer::b_component ! { dg-error "is a type that has not been declared" } end type b_type end module b_module ! { dg-final { cleanup-modules "error_stack_module b_module" } }