xref: /llvm-project/flang/test/Semantics/generic12.f90 (revision ecf264d3b4eebcfcc3bd89ceac090b82fd5e75c7)
1*ecf264d3SPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1
2*ecf264d3SPeter Klauslermodule m
3*ecf264d3SPeter Klausler  type t
4*ecf264d3SPeter Klausler   contains
5*ecf264d3SPeter Klausler    procedure :: tweedledee
6*ecf264d3SPeter Klausler    generic :: operator(.ga.) => tweedledee
7*ecf264d3SPeter Klausler    generic, private :: operator(.gb.) => tweedledee
8*ecf264d3SPeter Klausler  end type
9*ecf264d3SPeter Klausler  interface operator(.gc.)
10*ecf264d3SPeter Klausler    module procedure tweedledum
11*ecf264d3SPeter Klausler  end interface
12*ecf264d3SPeter Klausler contains
13*ecf264d3SPeter Klausler  integer function tweedledee(x,y)
14*ecf264d3SPeter Klausler    class(t), intent(in) :: x, y
15*ecf264d3SPeter Klausler    tweedledee = 1
16*ecf264d3SPeter Klausler  end
17*ecf264d3SPeter Klausler  integer function tweedledum(x,y)
18*ecf264d3SPeter Klausler    class(t), intent(in) :: x, y
19*ecf264d3SPeter Klausler    tweedledum = 2
20*ecf264d3SPeter Klausler  end
21*ecf264d3SPeter Klauslerend
22*ecf264d3SPeter Klausler
23*ecf264d3SPeter Klauslermodule badDueToAccessibility
24*ecf264d3SPeter Klausler  !ERROR: Generic 'OPERATOR(.ga.)' may not have specific procedures 'tweedledum' and 't%tweedledee' as their interfaces are not distinguishable
25*ecf264d3SPeter Klausler  use m, operator(.ga.) => operator(.gc.)
26*ecf264d3SPeter Klauslerend
27*ecf264d3SPeter Klausler
28*ecf264d3SPeter Klauslermodule goodDueToInaccessibility
29*ecf264d3SPeter Klausler  use m, operator(.gb.) => operator(.gc.)
30*ecf264d3SPeter Klauslerend
31