mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
60 lines
1.8 KiB
Swift
60 lines
1.8 KiB
Swift
// Test various tuple constraints.
|
|
|
|
// RUN: %swift -repl < %s 2>&1 | FileCheck %s
|
|
|
|
func f0(x : Int, y : Float) {}
|
|
|
|
var i : Int
|
|
var f : Float
|
|
|
|
func f1(y : Float, rest : Int...) {}
|
|
|
|
//===--------------------------------------------------------------------===//
|
|
// Conversions and shuffles
|
|
//===--------------------------------------------------------------------===//
|
|
|
|
// Basic tuple shuffle
|
|
// CHECK: Constraints:
|
|
// CHECK: $T0 is an integer literal
|
|
// CHECK: (x : Int, y : Float) -> () == $T1 -> $T2
|
|
// CHECK: (y : [byref(heap)] Float, x : $T0) << $T1
|
|
// CHECK: ---Child system #1---
|
|
// CHECK: Assumptions:
|
|
// CHECK: assuming $T0 == Int64
|
|
// CHECK: Type Variables:
|
|
// CHECK: $T0 as Int64
|
|
// CHECK: $T1 as (x : Int64, y : Float)
|
|
// CHECK: $T2 as ()
|
|
// CHECK: SOLVED (completely)
|
|
// CHECK: Unique solution found.
|
|
:dump_constraints f0(y=f, x=1)
|
|
|
|
// Variadic functions.
|
|
// CHECK: Constraints:
|
|
// CHECK: $T0 is an integer literal
|
|
// CHECK: $T1 is an integer literal
|
|
// CHECK: $T2 is an integer literal
|
|
// CHECK: $T3 is an integer literal
|
|
// CHECK: $T4 is an integer literal
|
|
// CHECK: (y : Float, rest : Int...) -> () == $T5 -> $T6
|
|
// CHECK: (y : [byref(heap)] Float, $T0, $T1, $T2, $T3, $T4) << $T5
|
|
// CHECK: ---Child system #1---
|
|
// CHECK: Assumptions:
|
|
// CHECK: assuming $T0 == Int64
|
|
// CHECK: assuming $T1 == Int64
|
|
// CHECK: assuming $T2 == Int64
|
|
// CHECK: assuming $T3 == Int64
|
|
// CHECK: assuming $T4 == Int64
|
|
// CHECK: Type Variables:
|
|
// CHECK: $T0 as Int64
|
|
// CHECK: $T1 as Int64
|
|
// CHECK: $T2 as Int64
|
|
// CHECK: $T3 as Int64
|
|
// CHECK: $T4 as Int64
|
|
// CHECK: $T5 as (y : Float, rest : Int64...)
|
|
// CHECK: $T6 as ()
|
|
// CHECK: SOLVED (completely)
|
|
// CHECK: Unique solution found.
|
|
// FIXME: IRgen can't handle y=f at the end.
|
|
:dump_constraints f1(y=f, 1, 2, 3, 4, 5)
|