view gcc/testsuite/gfortran.dg/class_14.f03 @ 128:fe568345ddd5

fix CbC-example
author mir3636
date Wed, 11 Apr 2018 19:32:28 +0900
parents 04ced10e8804
children
line wrap: on
line source

! { dg-do compile }
! Test the final fix for PR42353, in which a compilation error was
! occurring because the derived type of the initializer of the vtab
! component '$extends' was not the same as that of the component.
!
! Contributed by Harald Anlauf <anlauf@gmx.de>
!
module abstract_vector
  implicit none

  type, abstract :: vector_class
  end type vector_class
end module abstract_vector
!-------------------------
module concrete_vector
  use abstract_vector
  implicit none

  type, extends(vector_class) :: trivial_vector_type
  end type trivial_vector_type

  private :: my_assign
contains
  subroutine my_assign (this,v)
    class(trivial_vector_type), intent(inout) :: this
    class(vector_class),        intent(in)    :: v
  end subroutine my_assign
end module concrete_vector
!---------------------------
module concrete_gradient
  use abstract_vector
  implicit none

  type, abstract, extends(vector_class) :: gradient_class
  end type gradient_class

  type, extends(gradient_class) :: trivial_gradient_type
  end type trivial_gradient_type

  private :: my_assign
contains
  subroutine my_assign (this,v)
    class(trivial_gradient_type), intent(inout) :: this
    class(vector_class),          intent(in)    :: v
  end subroutine my_assign
end module concrete_gradient
!----------------------------
module concrete_inner_product
  use concrete_vector
  use concrete_gradient
  implicit none
end module concrete_inner_product