llvm/flang/test/Semantics/resolve47.f90

! RUN: %python %S/test_errors.py %s %flang_fc1
module m1
  !ERROR: Logical constant '.true.' may not be used as a defined operator
  interface operator(.TRUE.)
  end interface
  !ERROR: Logical constant '.false.' may not be used as a defined operator
  generic :: operator(.false.) => bar
end

module m2
  interface operator(+)
    module procedure foo
  end interface
  interface operator(.foo.)
    module procedure foo
  end interface
  interface operator(.ge.)
    module procedure bar
  end interface
contains
  integer function foo(x, y)
    logical, intent(in) :: x, y
    foo = 0
  end
  logical function bar(x, y)
    complex, intent(in) :: x, y
    bar = .false.
  end
end

!ERROR: Intrinsic operator '.le.' may not be used as a defined operator
use m2, only: operator(.le.) => operator(.ge.)
!ERROR: Intrinsic operator '.not.' may not be used as a defined operator
use m2, only: operator(.not.) => operator(.foo.)
!ERROR: Logical constant '.true.' may not be used as a defined operator
use m2, only: operator(.true.) => operator(.foo.)
end