| // RUN: %target-typecheck-verify-swift -parse-stdlib -debug-constraints > %t.log 2>&1 |
| // RUN: %FileCheck %s < %t.log |
| import Swift |
| |
| |
| func takeDoubleAndBool(_: Double, _: Bool) { } |
| |
| func testTernaryOneWay(b: Bool, b2: Bool) { |
| // CHECK: ---Connected components--- |
| // CHECK-NEXT: 3: $T10 depends on 1 |
| // CHECK-NEXT: 1: $T5 $T8 $T9 depends on 0, 2 |
| // CHECK-NEXT: 2: $T7 |
| // CHECK-NEXT: 0: $T4 |
| // CHECK-NEXT: 4: $T11 $T13 $T14 |
| takeDoubleAndBool( |
| Builtin.one_way( |
| b ? Builtin.one_way(3.14159) : Builtin.one_way(2.71828)), |
| b == true) |
| } |
| |
| func int8Or16(_ x: Int8) -> Int8 { return x } |
| func int8Or16(_ x: Int16) -> Int16 { return x } |
| |
| func testTernaryOneWayOverload(b: Bool) { |
| // CHECK: ---Connected components--- |
| // CHECK: 1: $T5 $T10 $T11 depends on 0, 2 |
| // CHECK: 2: $T7 $T8 $T9 |
| // CHECK: 0: $T2 $T3 $T4 |
| |
| // CHECK: solving component #1 |
| // CHECK: Initial bindings: $T11 := Int16, $T11 := Int8 |
| |
| // CHECK: solving component #1 |
| // CHECK: Initial bindings: $T11 := Int16, $T11 := Int8 |
| |
| // CHECK: solving component #1 |
| // CHECK: Initial bindings: $T11 := Int8, $T11 := Int16 |
| |
| // CHECK: solving component #1 |
| // CHECK: Initial bindings: $T11 := Int8 |
| // CHECK: found solution 0 0 0 0 0 0 0 0 2 0 0 0 0 0 |
| |
| // CHECK: composed solution 0 0 0 0 0 0 0 0 2 0 0 0 0 0 |
| // CHECK-NOT: composed solution 0 0 0 0 0 0 0 0 2 0 0 0 0 0 |
| let _: Int8 = b ? Builtin.one_way(int8Or16(17)) : Builtin.one_way(int8Or16(42)) |
| } |