Files
swift-mirror/test/SILGen/argument_shuffle.swift
Michael Gottesman 20c3e1e92f [semantic-sil] Update 45 SILGen tests for ownership.
Very roughly this increases the total coverage of SILGen tests with ownership
enabled to ~20%.

rdar://33358110
2017-08-20 19:11:55 -07:00

51 lines
1.3 KiB
Swift

// RUN: %target-swift-frontend -emit-silgen -enable-sil-ownership %s
struct Horse<T> {
func walk(_: (String, Int), reverse: Bool) {}
func trot(_: (x: String, y: Int), halfhalt: Bool) {}
func canter(_: T, counter: Bool) {}
}
var kevin = Horse<(x: String, y: Int)>()
var loki = Horse<(String, Int)>()
//
// No conversion
let noLabelsTuple = ("x", 1)
kevin.walk(("x", 1), reverse: false)
kevin.walk(noLabelsTuple, reverse: false)
loki.canter(("x", 1), counter: false)
loki.canter(noLabelsTuple, counter: false)
// Introducing labels
kevin.trot(("x", 1), halfhalt: false)
kevin.trot(noLabelsTuple, halfhalt: false)
kevin.canter(("x", 1), counter: false)
kevin.canter(noLabelsTuple, counter: false)
// Eliminating labels
let labelsTuple = (x: "x", y: 1)
kevin.walk((x: "x", y: 1), reverse: false)
kevin.walk(labelsTuple, reverse: false)
loki.canter((x: "x", y: 1), counter: false)
loki.canter(labelsTuple, counter: false)
// No conversion
kevin.trot((x: "x", y: 1), halfhalt: false)
kevin.trot(labelsTuple, halfhalt: false)
kevin.canter((x: "x", y: 1), counter: false)
kevin.canter(labelsTuple, counter: false)
// Shuffling labels
let shuffledLabelsTuple = (y: 1, x: "x")
kevin.trot((y: 1, x: "x"), halfhalt: false)
kevin.trot(shuffledLabelsTuple, halfhalt: false)
kevin.canter((y: 1, x: "x"), counter: false)
kevin.canter(shuffledLabelsTuple, counter: false)