Files
swift-mirror/test/Constraints/one_way_solve.swift
Kavon Farvardin b8a04f63e7 Test: prefer -enable-builtin-module
Many tests that use `-parse-stdlib` only do so because they want access
to the Builtin module. Now that we have the flag and ability to import
it, use that instead.
2024-02-01 10:39:02 -08:00

50 lines
2.0 KiB
Swift

// RUN: %target-typecheck-verify-swift -enable-builtin-module -debug-constraints > %t.log 2>&1
// RUN: %FileCheck %s < %t.log
import Builtin
func takeDoubleAndBool(_: Double, _: Bool) { }
func testTernaryOneWay(b: Bool, b2: Bool) {
// CHECK: ---Connected components---
// CHECK-NEXT: 3: $T{{[0-9]+}} depends on 1
// CHECK-NEXT: 1: $T{{[0-9]+}} $T{{[0-9]+}} $T{{[0-9]+}} depends on 0, 2
// CHECK-NEXT: 2: $T{{[0-9]+}}
// CHECK-NEXT: 0: $T{{[0-9]+}}
// CHECK-NEXT: 4: $T{{[0-9]+}} $T{{[0-9]+}} $T{{[0-9]+}}
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: [[A:\$T[0-9]+]] [[B:\$T[0-9]+]] [[C:\$T[0-9]+]] depends on 0, 2
// CHECK: 2: $T{{[0-9]+}} $T{{[0-9]+}} $T{{[0-9]+}}
// CHECK: 0: $T{{[0-9]+}} $T{{[0-9]+}} $T{{[0-9]+}}
// CHECK: solving component #1
// CHECK: (attempting type variable binding [[C]] := Int8
// CHECK: solving component #1
// CHECK: (attempting type variable binding [[C]] := Int8
// CHECK: solving component #1
// CHECK: (attempting type variable binding [[C]] := Int8
// CHECK: solving component #1
// CHECK: (attempting type variable binding [[C]] := Int8
// CHECK: (considering: $T{{[0-9]+}} conv [[C]]
// CHECK: (considering: $T{{[0-9]+}} conv [[C]]
// CHECK: (considering: [[C]] conv Int8
// CHECK: (found solution: [component: non-default literal(s), value: 2] [component: use of overloaded unapplied function(s), value: 2])
// CHECK: (composed solution: [component: non-default literal(s), value: 2] [component: use of overloaded unapplied function(s), value: 2])
// CHECK-NOT: (composed solution: [component: non-default literal(s), value: 2] [component: use of overloaded unapplied function(s), value: 2])
let _: Int8 = b ? Builtin.one_way(int8Or16(17)) : Builtin.one_way(int8Or16(42))
}