1! { dg-do run }
2!
3! try to provoke class name clashes in gfc_build_class_symbol
4!
5module test_module
6
7  implicit none
8
9  type, public :: test_p
10    private
11    class (test_p), pointer :: next => null()
12  end type test_p
13
14  type, public :: test
15!   Error in "call do_it (x)" below:
16!   Type mismatch in argument 'x' at (1); passed CLASS(test_p) to CLASS(test)
17    class (test), pointer :: next => null()
18  end type test
19
20contains
21
22  subroutine do_it (x)
23    class (test_p), target :: x
24
25    x%next => x
26    return
27  end subroutine do_it
28
29end module test_module
30
31use test_module
32
33  implicit none
34  class (test_p), pointer :: x
35
36  allocate (x)
37  call do_it (x)
38  deallocate (x)
39end
40