Skip to content

Commit b63cc13

Browse files
committed
[SILGen] Test: Moved tests for lexical lifetimes.
Previously, tests for the generation of lexical borrow scopes when -enable-experimental-lexical-lifetimes is passed had been dumped into the file testing the creation of all borrow scopes. Here, the file containing tests on general borrow scopes is reverted to its original state and a new file dedicated to lexical lifetimes is added. Subsequent tests for SILGen's creation of lexical lifetimes will go into that new file.
1 parent a3be846 commit b63cc13

File tree

2 files changed

+86
-57
lines changed

2 files changed

+86
-57
lines changed

test/SILGen/borrow.swift

Lines changed: 1 addition & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
// RUN: %target-swift-emit-silgen -enable-experimental-lexical-lifetimes -module-name borrow -parse-stdlib %s | %FileCheck %s
2+
// RUN: %target-swift-emit-silgen -module-name borrow -parse-stdlib %s | %FileCheck %s
33

44
import Swift
55

@@ -13,7 +13,6 @@ final class C {
1313
var d: D = D()
1414
}
1515

16-
func use<T>(_ t: T) {}
1716
func useD(_ d: D) {}
1817

1918
// CHECK-LABEL: sil hidden [ossa] @$s6borrow44lvalueBorrowShouldBeAtEndOfFormalAccessScope{{.*}} : $@convention(thin) () -> () {
@@ -36,58 +35,3 @@ func lvalueBorrowShouldBeAtEndOfFormalAccessScope() {
3635
var c = C()
3736
useD(c.d)
3837
}
39-
40-
// CHECK-LABEL: sil hidden [ossa] @lexical_borrow_let_class
41-
// CHECK: [[INIT_C:%[^,]+]] = function_ref @$s6borrow1CCACycfC
42-
// CHECK: [[INSTANCE:%[^,]+]] = apply [[INIT_C]]({{%[0-9]+}})
43-
// CHECK: [[BORROW:%[^,]+]] = begin_borrow [lexical] [[INSTANCE]] : $C
44-
// CHECK: end_borrow [[BORROW:%[^,]+]]
45-
// CHECK-LABEL: } // end sil function 'lexical_borrow_let_class'
46-
@_silgen_name("lexical_borrow_let_class")
47-
func lexical_borrow_let_class() {
48-
let c = C()
49-
}
50-
51-
// CHECK-LABEL: sil hidden [ossa] @lexical_borrow_if_let_class
52-
// CHECK: [[INIT_C:%[^,]+]] = function_ref @$s6borrow1CC8failablyACSgyt_tcfC
53-
// CHECK: [[INSTANCE:%[^,]+]] = apply [[INIT_C]]({{%[^,]+}})
54-
// CHECK: switch_enum [[INSTANCE]] : $Optional<C>, case #Optional.some!enumelt: [[BASIC_BLOCK2:bb[^,]+]], case #Optional.none!enumelt: {{bb[^,]+}}
55-
// CHECK: [[BASIC_BLOCK2]]([[INSTANCE:%[^,]+]] : @owned $C):
56-
// CHECK: [[BORROW:%[^,]+]] = begin_borrow [lexical] [[INSTANCE]] : $C
57-
// CHECK: end_borrow [[BORROW]] : $C
58-
// CHECK-LABEL: // end sil function 'lexical_borrow_if_let_class'
59-
@_silgen_name("lexical_borrow_if_let_class")
60-
func lexical_borrow_if_let_class() {
61-
if let c = C(failably: ()) {
62-
use(())
63-
}
64-
}
65-
66-
struct S {
67-
let c: C
68-
}
69-
70-
// CHECK-LABEL: sil hidden [ossa] @lexical_borrow_let_class_in_struct
71-
// CHECK: [[INIT_S:%[^,]+]] = function_ref @$s6borrow1SV1cAcA1CC_tcfC
72-
// CHECK: [[INSTANCE:%[^,]+]] = apply [[INIT_S]]({{%[0-9]+}}, {{%[0-9]+}})
73-
// CHECK: [[BORROW:%[^,]+]] = begin_borrow [lexical] [[INSTANCE]] : $S
74-
// CHECK: end_borrow [[BORROW:%[^,]+]]
75-
// CHECK-LABEL: } // end sil function 'lexical_borrow_let_class_in_struct'
76-
@_silgen_name("lexical_borrow_let_class_in_struct")
77-
func lexical_borrow_let_class_in_struct() {
78-
let s = S(c: C())
79-
}
80-
81-
enum E {
82-
case e(C)
83-
}
84-
85-
// CHECK-LABEL: sil hidden [ossa] @lexical_borrow_let_class_in_enum
86-
// CHECK: [[INSTANCE:%[^,]+]] = enum $E, #E.e!enumelt, {{%[0-9]+}} : $C
87-
// CHECK: [[BORROW:%[^,]+]] = begin_borrow [lexical] [[INSTANCE]] : $E
88-
// CHECK: end_borrow [[BORROW:%[^,]+]]
89-
// CHECK-LABEL: } // end sil function 'lexical_borrow_let_class_in_enum'
90-
@_silgen_name("lexical_borrow_let_class_in_enum")
91-
func lexical_borrow_let_class_in_enum() {
92-
let s = E.e(C())
93-
}

test/SILGen/lexical_lifetime.swift

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
// RUN: %target-swift-emit-silgen -enable-experimental-lexical-lifetimes -module-name borrow -parse-stdlib %s | %FileCheck %s
2+
3+
import Swift
4+
5+
////////////////////////////////////////////////////////////////////////////////
6+
// Declarations {{
7+
////////////////////////////////////////////////////////////////////////////////
8+
9+
final class C {
10+
init() {}
11+
init?(failably: ()) {}
12+
}
13+
14+
struct S {
15+
let c: C
16+
}
17+
18+
enum E {
19+
case e(C)
20+
}
21+
22+
func use<T>(_ t: T) {}
23+
24+
////////////////////////////////////////////////////////////////////////////////
25+
// Declarations }}
26+
////////////////////////////////////////////////////////////////////////////////
27+
28+
29+
////////////////////////////////////////////////////////////////////////////////
30+
// Tests {{
31+
////////////////////////////////////////////////////////////////////////////////
32+
33+
// let bindings:
34+
35+
// CHECK-LABEL: sil hidden [ossa] @lexical_borrow_let_class
36+
// CHECK: [[INIT_C:%[^,]+]] = function_ref @$s6borrow1CCACycfC
37+
// CHECK: [[INSTANCE:%[^,]+]] = apply [[INIT_C]]({{%[0-9]+}})
38+
// CHECK: [[BORROW:%[^,]+]] = begin_borrow [lexical] [[INSTANCE]] : $C
39+
// CHECK: end_borrow [[BORROW:%[^,]+]]
40+
// CHECK-LABEL: } // end sil function 'lexical_borrow_let_class'
41+
@_silgen_name("lexical_borrow_let_class")
42+
func lexical_borrow_let_class() {
43+
let c = C()
44+
}
45+
46+
// CHECK-LABEL: sil hidden [ossa] @lexical_borrow_if_let_class
47+
// CHECK: [[INIT_C:%[^,]+]] = function_ref @$s6borrow1CC8failablyACSgyt_tcfC
48+
// CHECK: [[INSTANCE:%[^,]+]] = apply [[INIT_C]]({{%[^,]+}})
49+
// CHECK: switch_enum [[INSTANCE]] : $Optional<C>, case #Optional.some!enumelt: [[BASIC_BLOCK2:bb[^,]+]], case #Optional.none!enumelt: {{bb[^,]+}}
50+
// CHECK: [[BASIC_BLOCK2]]([[INSTANCE:%[^,]+]] : @owned $C):
51+
// CHECK: [[BORROW:%[^,]+]] = begin_borrow [lexical] [[INSTANCE]] : $C
52+
// CHECK: end_borrow [[BORROW]] : $C
53+
// CHECK-LABEL: // end sil function 'lexical_borrow_if_let_class'
54+
@_silgen_name("lexical_borrow_if_let_class")
55+
func lexical_borrow_if_let_class() {
56+
if let c = C(failably: ()) {
57+
use(())
58+
}
59+
}
60+
61+
// CHECK-LABEL: sil hidden [ossa] @lexical_borrow_let_class_in_struct
62+
// CHECK: [[INIT_S:%[^,]+]] = function_ref @$s6borrow1SV1cAcA1CC_tcfC
63+
// CHECK: [[INSTANCE:%[^,]+]] = apply [[INIT_S]]({{%[0-9]+}}, {{%[0-9]+}})
64+
// CHECK: [[BORROW:%[^,]+]] = begin_borrow [lexical] [[INSTANCE]] : $S
65+
// CHECK: end_borrow [[BORROW:%[^,]+]]
66+
// CHECK-LABEL: } // end sil function 'lexical_borrow_let_class_in_struct'
67+
@_silgen_name("lexical_borrow_let_class_in_struct")
68+
func lexical_borrow_let_class_in_struct() {
69+
let s = S(c: C())
70+
}
71+
72+
// CHECK-LABEL: sil hidden [ossa] @lexical_borrow_let_class_in_enum
73+
// CHECK: [[INSTANCE:%[^,]+]] = enum $E, #E.e!enumelt, {{%[0-9]+}} : $C
74+
// CHECK: [[BORROW:%[^,]+]] = begin_borrow [lexical] [[INSTANCE]] : $E
75+
// CHECK: end_borrow [[BORROW:%[^,]+]]
76+
// CHECK-LABEL: } // end sil function 'lexical_borrow_let_class_in_enum'
77+
@_silgen_name("lexical_borrow_let_class_in_enum")
78+
func lexical_borrow_let_class_in_enum() {
79+
let s = E.e(C())
80+
}
81+
82+
////////////////////////////////////////////////////////////////////////////////
83+
// Test }}
84+
////////////////////////////////////////////////////////////////////////////////
85+

0 commit comments

Comments
 (0)