xref: /llvm-project/flang/test/Semantics/generic07.f90 (revision 3d1157000db56a340e1dae90b587bd144ffeaa6c)
1! RUN: %python %S/test_errors.py %s %flang_fc1
2module m1
3  type :: t1
4    sequence
5    real :: x
6  end type
7  type :: t2
8    sequence
9    real :: x
10  end type
11  type :: t3
12    real :: x
13  end type
14  type :: t4
15    real, private :: x
16  end type
17 contains
18  subroutine s1a(x)
19    type(t1), intent(in) :: x
20  end
21  subroutine s2a(x)
22    type(t2), intent(in) :: x
23  end
24  subroutine s3a(x)
25    type(t3), intent(in) :: x
26  end
27  subroutine s4a(x)
28    type(t4), intent(in) :: x
29  end
30end
31
32module m2
33  type t10
34    integer n
35   contains
36    procedure :: f
37    generic:: operator(+) => f
38  end type
39 contains
40  elemental type(t10) function f(x,y)
41    class(t10), intent(in) :: x, y
42    f%n = x%n + y%n
43  end
44end
45
46module m3
47  use m2, only: rt10 => t10
48end
49
50program test
51  use m1, only: s1a, s2a, s3a, s4a
52  use m2, only: t10
53  use m3, only: rt10 ! alias for t10, ensure no distinguishability error
54  type :: t1
55    sequence
56    integer :: x ! distinct type
57  end type
58  type :: t2
59    sequence
60    real :: x
61  end type
62  type :: t3 ! no SEQUENCE
63    real :: x
64  end type
65  type :: t4
66    real :: x ! not PRIVATE
67  end type
68  interface distinguishable1
69    procedure :: s1a, s1b
70  end interface
71  interface distinguishable2
72    procedure :: s1a, s1b
73  end interface
74  interface distinguishable3
75    procedure :: s1a, s1b
76  end interface
77  !ERROR: Generic 'indistinguishable' may not have specific procedures 's2b' and 's2a' as their interfaces are not distinguishable
78  interface indistinguishable
79    procedure :: s2a, s2b
80  end interface
81 contains
82  subroutine s1b(x)
83    type(t1), intent(in) :: x
84  end
85  subroutine s2b(x)
86    type(t2), intent(in) :: x
87  end
88  subroutine s3b(x)
89    type(t3), intent(in) :: x
90  end
91  subroutine s4b(x)
92    type(t4), intent(in) :: x
93  end
94end
95