summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/nested_modules_3.f90
blob: 7550368bcd93a087725c019c04be799e291cd202 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
! { dg-do run }
!
! This tests the improved version of the patch for PR16861.  Testing
! after committing the first version, revealed that this test did
! not work but was not regtested for, either.
!
! Contributed by Paul Thomas <pault@gcc.gnu.org>
!
MODULE foo
  TYPE type1
    INTEGER i1
  END TYPE type1
END MODULE

MODULE bar
CONTAINS
  SUBROUTINE sub1 (x, y)
    USE foo
    TYPE (type1)  :: x
    INTEGER  :: y(x%i1)
    y = 1
  END SUBROUTINE SUB1
  SUBROUTINE sub2 (u, v)
    USE foo
    TYPE (type1)  :: u
    INTEGER  :: v(u%i1)
    v = 2
  END SUBROUTINE SUB2
END MODULE

MODULE foobar
  USE foo
  USE bar
CONTAINS
  SUBROUTINE sub3 (s, t)
    USE foo
    TYPE (type1)  :: s
    INTEGER  :: t(s%i1)
    t = 3
  END SUBROUTINE SUB3
END MODULE foobar

PROGRAM use_foobar
  USE foo
  USE foobar
  INTEGER :: j(3) = 0
  TYPE (type1)   :: z
  z%i1 = 3
  CALL sub1 (z, j)
  z%i1 = 2
  CALL sub2 (z, j)
  z%i1 = 1
  CALL sub3 (z, j)
  IF (ALL (j.ne.(/3,2,1/))) CALL abort ()
END PROGRAM use_foobar

! { dg-final { cleanup-modules "foo bar foobar" } }