mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Defines the %target-playground-build-run-swift macro in the local lit config for PlaygroundTransform which contains all the boilerplate code used by most PlaygroundTransform tests: * Build a PlaygroundSupport module * Build the test source into an executable, linking PlaygroundSupport * Codesign and run the executable
172 lines
5.6 KiB
Swift
172 lines
5.6 KiB
Swift
// -playground
|
|
// RUN: %target-playground-build-run-swift(-swift-version 5 -Xfrontend -playground) | %FileCheck %s
|
|
// RUN: %target-playground-build-run-swift(-swift-version 6 -Xfrontend -playground) | %FileCheck %s
|
|
//
|
|
// -pc-macro -playground
|
|
// RUN: %target-playground-build-run-swift(-swift-version 5 -Xfrontend -pc-macro -Xfrontend -playground) | %FileCheck %s
|
|
// RUN: %target-playground-build-run-swift(-swift-version 6 -Xfrontend -pc-macro -Xfrontend -playground) | %FileCheck %s
|
|
//
|
|
// REQUIRES: executable_test
|
|
|
|
import PlaygroundSupport
|
|
|
|
// First make sure we get results in accessors and regular functions for an unwrapped class.
|
|
class MyClass {
|
|
func f() {
|
|
let x = 1
|
|
}
|
|
var v1: Int {
|
|
return 2
|
|
}
|
|
var v2: Int {
|
|
get {
|
|
return 3
|
|
}
|
|
set {
|
|
let y = 4
|
|
}
|
|
}
|
|
var v3: Int = 5 {
|
|
didSet {
|
|
let z = 6
|
|
}
|
|
}
|
|
subscript(index: Int) -> Int {
|
|
get {
|
|
return 7
|
|
}
|
|
set {
|
|
let y = 8
|
|
}
|
|
}
|
|
}
|
|
do {
|
|
let c = MyClass()
|
|
c.f()
|
|
c.v1
|
|
c.v2 = 7
|
|
c.v2
|
|
c.v3 = 8
|
|
c[9]
|
|
c[9] = 10
|
|
}
|
|
|
|
// CHECK: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[c='main{{.*}}.MyClass']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[x='1']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[c='main{{.*}}.MyClass']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='2']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='2']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[newValue='7']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[y='4']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[c='main{{.*}}.MyClass']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='3']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='3']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[z='6']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[c='main{{.*}}.MyClass']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[index='9']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='7']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='7']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='10']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[newValue='10']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[index='9']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[y='8']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
|
|
// Now make sure we get results in accessors and regular functions for a wrapped class too.
|
|
struct Playground {
|
|
static func doit() {
|
|
class MyClass {
|
|
func f() {
|
|
let x = 1
|
|
}
|
|
var v1: Int {
|
|
return 2
|
|
}
|
|
var v2: Int {
|
|
get {
|
|
return 3
|
|
}
|
|
set {
|
|
let y = 4
|
|
}
|
|
}
|
|
var v3: Int = 5 {
|
|
didSet {
|
|
let z = 6
|
|
}
|
|
}
|
|
subscript(index: Int) -> Int {
|
|
get {
|
|
return 7
|
|
}
|
|
set {
|
|
let y = 8
|
|
}
|
|
}
|
|
}
|
|
do {
|
|
let c = MyClass()
|
|
c.f()
|
|
c.v1
|
|
c.v2 = 7
|
|
c.v2
|
|
c.v3 = 8
|
|
c[9]
|
|
c[9] = 10
|
|
}
|
|
}
|
|
}
|
|
Playground.doit()
|
|
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[c='main{{.*}}.MyClass']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[x='1']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[c='main{{.*}}.MyClass']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='2']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='2']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[newValue='7']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[y='4']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[c='main{{.*}}.MyClass']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='3']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='3']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[z='6']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[c='main{{.*}}.MyClass']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[index='9']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='7']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='7']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[='10']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_entry
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[newValue='10']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[index='9']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log[y='8']
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|
|
// CHECK-NEXT: [{{.*}}] __builtin_log_scope_exit
|