1! { dg-do compile }
2! Tests the fix for PR36366 a regression in which the order of USE statements
3! in 'test2' would cause the result of 'test1' not to have a reference to
4! the derived type 'inner'.
5!
6! Contributed by Jakub Jelinek <jakub@gcc.gnu.org>
7!
8MODULE types
9  IMPLICIT NONE
10  TYPE :: inner
11    INTEGER, POINTER :: i(:)
12  END TYPE inner
13
14  TYPE :: outer
15    TYPE(inner), POINTER :: inr(:)
16  END TYPE outer
17END MODULE types
18
19MODULE mymod
20  IMPLICIT NONE
21CONTAINS
22  FUNCTION test1()
23    USE types
24    IMPLICIT NONE
25    TYPE(outer), POINTER :: test1
26    NULLIFY(test1)
27  END FUNCTION test1
28END MODULE mymod
29
30MODULE test
31  IMPLICIT NONE
32CONTAINS
33
34  SUBROUTINE test2(a)
35    USE mymod
36    USE types
37    IMPLICIT NONE
38    TYPE(outer), INTENT(INOUT) :: a
39    INTEGER :: i
40    i = a%inr(1)%i(1)
41  END SUBROUTINE test2
42
43  SUBROUTINE test3(a)
44    USE types
45    IMPLICIT NONE
46    TYPE(outer), INTENT(IN) :: a
47  END SUBROUTINE test3
48END MODULE test
49