blob: 5ed2e242c1e160e8521df35e528082bbd049781f [file] [log] [blame]
// 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")