1! RUN: %S/test_errors.sh %s %t %f18
2module m1
3  !ERROR: Logical constant '.true.' may not be used as a defined operator
4  interface operator(.TRUE.)
5  end interface
6  !ERROR: Logical constant '.false.' may not be used as a defined operator
7  generic :: operator(.false.) => bar
8end
9
10module m2
11  interface operator(+)
12    module procedure foo
13  end interface
14  interface operator(.foo.)
15    module procedure foo
16  end interface
17  interface operator(.ge.)
18    module procedure bar
19  end interface
20contains
21  integer function foo(x, y)
22    logical, intent(in) :: x, y
23    foo = 0
24  end
25  logical function bar(x, y)
26    complex, intent(in) :: x, y
27    bar = .false.
28  end
29end
30
31!ERROR: Intrinsic operator '.le.' may not be used as a defined operator
32use m2, only: operator(.le.) => operator(.ge.)
33!ERROR: Intrinsic operator '.not.' may not be used as a defined operator
34use m2, only: operator(.not.) => operator(.foo.)
35!ERROR: Logical constant '.true.' may not be used as a defined operator
36use m2, only: operator(.true.) => operator(.foo.)
37end
38