1! { dg-do compile }
2! { dg-options "-fwhole-file" }
3!
4! Tests the fix PR40011 comment 16 in which the derived type lists in
5! different program units were getting mixed up.
6!
7! Contributed by Daniel Franck  <dfranke@gcc.gnu.org>
8!
9MODULE module_foo
10  TYPE :: foo_node
11    TYPE(foo_node_private), POINTER :: p
12  END TYPE
13
14  TYPE :: foo_node_private
15    TYPE(foo_node), DIMENSION(-1:1) :: link
16  END TYPE
17
18  TYPE :: foo
19    TYPE(foo_node) :: root
20  END TYPE
21END MODULE
22
23FUNCTION foo_insert()
24  USE module_foo, ONLY: foo, foo_node
25
26  INTEGER :: foo_insert
27  TYPE(foo_node) :: parent, current
28  INTEGER :: cmp
29
30  parent  = current
31  current = current%p%link(cmp)
32END FUNCTION
33
34FUNCTION foo_count()
35  USE module_foo, ONLY: foo
36  INTEGER :: foo_count
37END FUNCTION
38