// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/def_operator.swift
// RUN: llvm-bcanalyzer %t/def_operator.swiftmodule | FileCheck %s
// RUN: %target-swift-frontend -parse -I%t %s
// RUN: %target-swift-frontend -interpret -I %t -DINTERP %s | FileCheck --check-prefix=OUTPUT %s

// REQUIRES: swift_interpreter

// FIXME: iOS doesn't work because this test needs the interpreter to handle 
// func typeCheckOnly (which causes link errors if built as an executable).

// CHECK-NOT: UnknownCode

import def_operator

prefix func ~~~(x: Int) -> (Int, Int, Int) {
  return (x, x, x)
}

var triple = (~~~42)
print("(\(triple.0), \(triple.1), \(triple.2))")
// OUTPUT: (42, 42, 42)

postfix func ^^(x: Int) -> Int {
  return x ^ x
}

print("\(1^^)")
// OUTPUT: 0


func *-(lhs: Int, rhs: Int) -> Int {
  return lhs - rhs
}
func -*(lhs: Int, rhs: Int) -> Int {
  return lhs - rhs
}
func *-*(lhs: Int, rhs: Int) -> Int {
  return lhs - rhs
}

print("\(5 *- 3 *- 2) \(5 -* 3 -* 2)")
// OUTPUT: 0 4
print("\(5 *- 3 -* 2) \(5 -* 3 *- 2)")
// OUTPUT: 0 4
print("\(5 *- 3 *-* 2) \(5 *-* 3 *- 2)")
// OUTPUT: 0 4

#if !INTERP

func typeCheckOnly() {
  ~~~true
  var b = false
  b^^
  true *-* false
  b *- false
}

#endif
