xref: /llvm-project/flang/test/Semantics/resolve118.f90 (revision c93312a63db8e8c87b14e1828c5a4d1eac5aac20)
11c91d9bdSPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic
232a793b6SPeter Klausler! USE vs IMPORT
332a793b6SPeter Klauslermodule m1
432a793b6SPeter Klausler  type t
532a793b6SPeter Klausler    integer n
632a793b6SPeter Klausler  end type
732a793b6SPeter Klauslerend module
832a793b6SPeter Klausler
932a793b6SPeter Klauslermodule m2
1032a793b6SPeter Klausler  type t
1132a793b6SPeter Klausler    real x
1232a793b6SPeter Klausler  end type
1332a793b6SPeter Klauslerend module
1432a793b6SPeter Klausler
1532a793b6SPeter Klauslermodule m3
1632a793b6SPeter Klausler  use m1
1732a793b6SPeter Klausler  interface
1832a793b6SPeter Klausler    subroutine s1(x)
1932a793b6SPeter Klausler      use m1
2032a793b6SPeter Klausler      !PORTABILITY: The same 't' is already present in this scope
2132a793b6SPeter Klausler      import t
2232a793b6SPeter Klausler      type(t) x
2332a793b6SPeter Klausler    end
2432a793b6SPeter Klausler    subroutine s2(x)
2532a793b6SPeter Klausler      use m2
2632a793b6SPeter Klausler      !ERROR: A distinct 't' is already present in this scope
2732a793b6SPeter Klausler      import t
2832a793b6SPeter Klausler      type(t) x
2932a793b6SPeter Klausler    end
3032a793b6SPeter Klausler  end interface
3132a793b6SPeter Klauslerend module
3232a793b6SPeter Klausler
3332a793b6SPeter Klauslermodule m4
3432a793b6SPeter Klausler  type t
3532a793b6SPeter Klausler    complex z
3632a793b6SPeter Klausler  end type
3732a793b6SPeter Klausler  interface
3832a793b6SPeter Klausler    subroutine s3(x)
3932a793b6SPeter Klausler      use m1
4032a793b6SPeter Klausler      !ERROR: A distinct 't' is already present in this scope
4132a793b6SPeter Klausler      import t
4232a793b6SPeter Klausler      type(t) x
4332a793b6SPeter Klausler    end
4432a793b6SPeter Klausler  end interface
4532a793b6SPeter Klauslerend module
4632a793b6SPeter Klausler
4732a793b6SPeter Klauslermodule m5
4832a793b6SPeter Klausler  interface
4932a793b6SPeter Klausler    subroutine s4(x)
5032a793b6SPeter Klausler      use m1
5132a793b6SPeter Klausler      !ERROR: A distinct 't' is already present in this scope
5232a793b6SPeter Klausler      import t
5332a793b6SPeter Klausler      type(t) x
5432a793b6SPeter Klausler    end
5532a793b6SPeter Klausler  end interface
5632a793b6SPeter Klausler contains
5732a793b6SPeter Klausler  subroutine t
5832a793b6SPeter Klausler  end
5932a793b6SPeter Klauslerend module
60*c93312a6SPeter Klausler
61*c93312a6SPeter Klauslermodule m6a
62*c93312a6SPeter Klausler  integer :: i = 7
63*c93312a6SPeter Klauslerend module
64*c93312a6SPeter Klausler
65*c93312a6SPeter Klauslermodule m6b
66*c93312a6SPeter Klausler  interface
67*c93312a6SPeter Klausler    module subroutine sub(arg)
68*c93312a6SPeter Klausler      interface
69*c93312a6SPeter Klausler        integer function arg(x)
70*c93312a6SPeter Klausler          use m6a, only: i
71*c93312a6SPeter Klausler          real :: x(i) ! ok
72*c93312a6SPeter Klausler        end
73*c93312a6SPeter Klausler      end interface
74*c93312a6SPeter Klausler    end
75*c93312a6SPeter Klausler  end interface
76*c93312a6SPeter Klauslerend module
77*c93312a6SPeter Klausler
78*c93312a6SPeter Klauslersubmodule (m6b) m6bs1
79*c93312a6SPeter Klausler  contains
80*c93312a6SPeter Klausler    module procedure sub
81*c93312a6SPeter Klausler    end
82*c93312a6SPeter Klauslerend submodule
83