forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlocal_types.swift
180 lines (169 loc) · 4.73 KB
/
local_types.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
// Tests lookup and mangling of local types
// RUN: rm -rf %t && mkdir %t
// RUN: %target-swiftc_driver -v -emit-module -module-name LocalTypes -o %t/LocalTypes.swiftmodule %s
// RUN: %target-swift-ide-test -print-local-types -I %t -module-to-print LocalTypes -source-filename %s | FileCheck %s
public func singleFunc() {
// CHECK-DAG: VF10LocalTypes10singleFuncFT_T_L_16SingleFuncStruct
struct SingleFuncStruct {
let sfsi: Int
}
// CHECK-DAG: CF10LocalTypes10singleFuncFT_T_L_15SingleFuncClass
class SingleFuncClass {
let sfcs: String
init(s: String) {
self.sfcs = s
}
}
// CHECK-DAG: OF10LocalTypes10singleFuncFT_T_L_14SingleFuncEnum
enum SingleFuncEnum {
case SFEI(Int)
}
}
public func singleFuncWithDuplicates(fake: Bool) {
if fake {
// CHECK-DAG: VF10LocalTypes24singleFuncWithDuplicatesFSbT_L_16SingleFuncStruct
struct SingleFuncStruct {
let sfsi: Int
}
// CHECK-DAG: CF10LocalTypes24singleFuncWithDuplicatesFSbT_L_15SingleFuncClass
class SingleFuncClass {
let sfcs: String
init(s: String) {
self.sfcs = s
}
}
// CHECK-DAG: OF10LocalTypes24singleFuncWithDuplicatesFSbT_L_14SingleFuncEnum
enum SingleFuncEnum {
case SFEI(Int)
}
} else {
// CHECK-DAG: VF10LocalTypes24singleFuncWithDuplicatesFSbT_L0_16SingleFuncStruct
struct SingleFuncStruct {
let sfsi: Int
}
// CHECK-DAG: CF10LocalTypes24singleFuncWithDuplicatesFSbT_L0_15SingleFuncClass
class SingleFuncClass {
let sfcs: String
init(s: String) {
self.sfcs = s
}
}
// CHECK-DAG: OF10LocalTypes24singleFuncWithDuplicatesFSbT_L0_14SingleFuncEnum
enum SingleFuncEnum {
case SFEI(Int)
}
}
}
public let singleClosure: () -> () = {
// CHECK-DAG: VF10LocalTypesU_FT_T_L_19SingleClosureStruct
struct SingleClosureStruct {
let scsi: Int
}
// CHECK-DAG: CF10LocalTypesU_FT_T_L_18SingleClosureClass
class SingleClosureClass {
let sccs: String
init(s: String) {
self.sccs = s
}
}
// CHECK-DAG: OF10LocalTypesU_FT_T_L_17SingleClosureEnum
enum SingleClosureEnum {
case SCEI(Int)
}
}
public var singlePattern: Int {
// CHECK-DAG: VF10LocalTypesg13singlePatternSiL_19SinglePatternStruct
struct SinglePatternStruct {
let spsi: Int
}
// CHECK-DAG: CF10LocalTypesg13singlePatternSiL_18SinglePatternClass
class SinglePatternClass {
let spcs: String
init(s: String) {
self.spcs = s
}
}
// CHECK-DAG: OF10LocalTypesg13singlePatternSiL_17SinglePatternEnum
enum SinglePatternEnum {
case SPEI(Int)
}
return 2
}
public func singleDefaultArgument(i i: Int = {
//CHECK-DAG: VFIF10LocalTypes21singleDefaultArgumentFT1iSi_T_A_U_FT_SiL_27SingleDefaultArgumentStruct
struct SingleDefaultArgumentStruct {
let sdasi: Int
}
// CHECK-DAG: CFIF10LocalTypes21singleDefaultArgumentFT1iSi_T_A_U_FT_SiL_26SingleDefaultArgumentClass
class SingleDefaultArgumentClass {
let sdacs: String
init(s: String) {
self.sdacs = s
}
}
// CHECK-DAG: OFIF10LocalTypes21singleDefaultArgumentFT1iSi_T_A_U_FT_SiL_25SingleDefaultArgumentEnum
enum SingleDefaultArgumentEnum {
case SDAEI(Int)
}
return 2
}()){
print(i)
}
public func doubleFunc() {
func innerFunc() {
// CHECK-DAG: VFF10LocalTypes10doubleFuncFT_T_L_9innerFuncFT_T_L_16DoubleFuncStruct
struct DoubleFuncStruct {
let dfsi: Int
}
// CHECK-DAG: CFF10LocalTypes10doubleFuncFT_T_L_9innerFuncFT_T_L_15DoubleFuncClass
class DoubleFuncClass {
let dfcs: String
init(s: String) {
self.dfcs = s
}
}
// CHECK-DAG: OFF10LocalTypes10doubleFuncFT_T_L_9innerFuncFT_T_L_14DoubleFuncEnum
enum DoubleFuncEnum {
case DFEI(Int)
}
}
innerFunc()
}
public let doubleClosure: () -> () = {
let singleClosure: () -> () = {
// CHECK-DAG: VFF10LocalTypesU0_FT_T_U_FT_T_L_19DoubleClosureStruct
struct DoubleClosureStruct {
let dcsi: Int
}
// CHECK-DAG: CFF10LocalTypesU0_FT_T_U_FT_T_L_18DoubleClosureClass
class DoubleClosureClass {
let dccs: String
init(s: String) {
self.dccs = s
}
}
// CHECK-DAG: OFF10LocalTypesU0_FT_T_U_FT_T_L_17DoubleClosureEnum
enum DoubleClosureEnum {
case DCEI(Int)
}
}
singleClosure()
}
@_transparent
public func transparentFunc() {
// CHECK-DAG: VF10LocalTypes15transparentFuncFT_T_L_21TransparentFuncStruct
struct TransparentFuncStruct {
let tfsi: Int
}
// CHECK-DAG: CF10LocalTypes15transparentFuncFT_T_L_20TransparentFuncClass
class TransparentFuncClass {
let tfcs: String
init(s: String) {
self.tfcs = s
}
}
// CHECK-DAG: OF10LocalTypes15transparentFuncFT_T_L_19TransparentFuncEnum
enum TransparentFuncEnum {
case TFEI(Int)
}
}