// RUN: %target-run-simple-swift | %FileCheck %s // REQUIRES: executable_test protocol MyBoolean { var boolValue: Bool { get } } func andc(_ x: Bool, _ y: T) -> Bool { return x && !y.boolValue } struct Truthy : MyBoolean { var boolValue: Bool { return true } } struct Falselike : MyBoolean { var boolValue: Bool { return false } } print(andc(true, Truthy())) // CHECK: false print(andc(false, Truthy())) // CHECK: false print(andc(true, Falselike())) // CHECK: true print(andc(false, Falselike())) // CHECK: false func must(_ x: T) { assert(x.boolValue) } func shant(_ x: T) { assert(!x.boolValue) } must(Truthy()) shant(Falselike()) print("ok") // CHECK: ok