blob: f9cf46421c15d5289481d111347328a4d04d3964 [file] [log] [blame]
! { dg-do compile }
!
! Fix a regession caused by the first patch for PR84674.
!
! Contributed by Juergen Reuter <juergen.reuter@desy.de>
!
module m1
implicit none
private
public :: t1
type, abstract :: t1
end type t1
end module m1
module t_base
use m1, only: t1
implicit none
private
public :: t_t
type, abstract :: t_t
contains
procedure (t_out), deferred :: output
end type t_t
abstract interface
subroutine t_out (t, handle)
import
class(t_t), intent(inout) :: t
class(t1), intent(inout), optional :: handle
end subroutine t_out
end interface
end module t_base
module t_ascii
use m1, only: t1
use t_base
implicit none
private
type, abstract, extends (t_t) :: t1_t
contains
procedure :: output => t_ascii_output
end type t1_t
type, extends (t1_t) :: t2_t
end type t2_t
type, extends (t1_t) :: t3_t
logical :: verbose = .true.
end type t3_t
interface
module subroutine t_ascii_output &
(t, handle)
class(t1_t), intent(inout) :: t
class(t1), intent(inout), optional :: handle
end subroutine t_ascii_output
end interface
end module t_ascii
submodule (t_ascii) t_ascii_s
implicit none
contains
module subroutine t_ascii_output &
(t, handle)
class(t1_t), intent(inout) :: t
class(t1), intent(inout), optional :: handle
select type (t)
type is (t3_t)
type is (t2_t)
class default
return
end select
end subroutine t_ascii_output
end submodule t_ascii_s