1! { dg-do compile }
2! Tests the fix for a further regression caused by the
3! fix for PR28788, as noted in reply #9 in the Bugzilla
4! entry by Martin Reinecke <martin@mpa-garching.mpg.de>.
5! The problem was caused by certain types of references
6! that point to a deleted derived type symbol, after the
7! type has been associated to another namespace. An
8! example of this is the specification expression for x
9! in subroutine foo below.  At the same time, this tests
10! the correct association of typeaa between a module
11! procedure and a new definition of the type in MAIN.
12!
13module types
14
15  type :: typea
16    sequence
17    integer :: i
18  end type typea
19
20  type :: typeaa
21    sequence
22    integer :: i
23  end type typeaa
24
25  type(typea) :: it = typea(2)
26
27end module types
28!------------------------------
29module global
30
31  use types, only: typea, it
32
33contains
34
35  subroutine foo (x)
36    use types
37    type(typeaa) :: ca
38    real :: x(it%i)
39    common /c/ ca
40    x = 42.0
41    ca%i = 99
42  end subroutine foo
43
44end module global
45!------------------------------
46  use global, only: typea, foo
47  type :: typeaa
48    sequence
49    integer :: i
50  end type typeaa
51  type(typeaa) :: cam
52  real :: x(4)
53  common /c/ cam
54  x = -42.0
55  call foo(x)
56  if (any (x .ne. (/42.0, 42.0, -42.0, -42.0/))) call abort ()
57  if (cam%i .ne. 99) call abort ()
58end
59