1! { dg-do compile }
2!
3! PR 41556
4! Contributed by Damian Rouson <damian@rouson.net>
5
6  implicit none
7
8  type ,abstract :: object
9  contains
10    procedure(assign_interface) ,deferred :: assign
11    generic  :: assignment(=) => assign
12  end type
13
14  abstract interface
15    subroutine assign_interface(lhs,rhs)
16      import :: object
17      class(object) ,intent(inout) :: lhs
18      class(object) ,intent(in)    :: rhs
19    end subroutine
20  end interface
21
22! PR 41937
23! Contributed by Juergen Reuter <reuter@physik.uni-freiburg.de>
24
25  type, abstract :: cuba_abstract_type
26     integer :: dim_f = 1
27     real, dimension(:), allocatable :: integral
28  end type cuba_abstract_type
29
30contains
31
32    subroutine cuba_abstract_alloc_dim_f(this)
33      class(cuba_abstract_type) :: this
34      allocate(this%integral(this%dim_f))
35    end subroutine cuba_abstract_alloc_dim_f
36
37end
38