// RUN: %target-run-simple-swift | FileCheck %s
// REQUIRES: executable_test
struct MyInt32 : BitwiseOperations {
  var underlying: Int32

  static var allZeros: MyInt32 { return MyInt32(underlying: 0) }
}

func & (lhs: MyInt32, rhs: MyInt32) -> MyInt32 {
  return MyInt32(underlying: lhs.underlying & rhs.underlying)
}

func |(lhs: MyInt32, rhs: MyInt32) -> MyInt32 {
  return MyInt32(underlying: lhs.underlying | rhs.underlying)
}

func ^(lhs: MyInt32, rhs: MyInt32) -> MyInt32 {
  return MyInt32(underlying: lhs.underlying ^ rhs.underlying)
}

prefix func ~(x: MyInt32) -> MyInt32 {
  return MyInt32(underlying: ~x.underlying)
}

// |=
var a = MyInt32(underlying: 0x3)
a |= MyInt32(underlying: 0x4)
assert(a.underlying == 0x7)

// &=
a &= MyInt32(underlying: 0x5)
assert(a.underlying == 0x5)

// ^= 
a ^= MyInt32(underlying: 0x6)
assert(a.underlying == 0x3)

// CHECK: done
print("done")
