|
4 | 4 | // RUN: %target-swift-frontend -typecheck -emit-const-values-path %t/ExtractGroups.swiftconstvalues -const-gather-protocols-file %t/protocols.json -primary-file %s
|
5 | 5 | // RUN: cat %t/ExtractGroups.swiftconstvalues 2>&1 | %FileCheck %s
|
6 | 6 |
|
| 7 | +protocol MyProto {} |
| 8 | + |
| 9 | +public struct Arrays : MyProto { |
| 10 | + let array1: [Int] = [1, 2, 3] |
| 11 | + let array2: [Foo] = [Bar(), 1, "hi"] |
| 12 | + let array3: [Bar] = [Bar()] |
| 13 | +} |
| 14 | + |
| 15 | +public struct Dictionaries : MyProto { |
| 16 | + let dict1: [String: Int] = ["One": 1, "Two": 2, "Three": 3] |
| 17 | + let dict2: [Int: [String]] = [ |
| 18 | + 1: ["a", "b", "c"], |
| 19 | + 2: ["z"] |
| 20 | + ] |
| 21 | + let dict3: [String: Foo] = [ |
| 22 | + "Bar": Bar(), |
| 23 | + "Int": 42 |
| 24 | + ] |
| 25 | +} |
| 26 | + |
| 27 | +public struct Tuples : MyProto { |
| 28 | + let tuple1: (String, Bar) = ("foo", Bar()) |
| 29 | + let tuple2: (lat: Float, lng: Float) = (lat: 42.7, lng: -73.9) |
| 30 | + let tuple3: Void = () |
| 31 | +} |
| 32 | + |
| 33 | +public protocol Foo {} |
| 34 | +public struct Bar: Foo {} |
| 35 | +extension Int: Foo {} |
| 36 | +extension String: Foo {} |
| 37 | + |
7 | 38 | // CHECK: [
|
8 | 39 | // CHECK-NEXT: {
|
9 | 40 | // CHECK-NEXT: "typeName": "ExtractGroups.Arrays",
|
10 | 41 | // CHECK-NEXT: "kind": "struct",
|
| 42 | +// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractGroups.swift", |
| 43 | +// CHECK-NEXT: "line": 9, |
11 | 44 | // CHECK-NEXT: "properties": [
|
12 | 45 | // CHECK-NEXT: {
|
13 | 46 | // CHECK-NEXT: "label": "array1",
|
14 | 47 | // CHECK-NEXT: "type": "[Swift.Int]",
|
15 | 48 | // CHECK-NEXT: "isStatic": "false",
|
16 | 49 | // CHECK-NEXT: "isComputed": "false",
|
| 50 | +// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractGroups.swift", |
| 51 | +// CHECK-NEXT: "line": 10, |
17 | 52 | // CHECK-NEXT: "valueKind": "Array",
|
18 | 53 | // CHECK-NEXT: "value": [
|
19 | 54 | // CHECK-NEXT: {
|
|
35 | 70 | // CHECK-NEXT: "type": "[ExtractGroups.Foo]",
|
36 | 71 | // CHECK-NEXT: "isStatic": "false",
|
37 | 72 | // CHECK-NEXT: "isComputed": "false",
|
| 73 | +// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractGroups.swift", |
| 74 | +// CHECK-NEXT: "line": 11, |
38 | 75 | // CHECK-NEXT: "valueKind": "Array",
|
39 | 76 | // CHECK-NEXT: "value": [
|
40 | 77 | // CHECK-NEXT: {
|
|
59 | 96 | // CHECK-NEXT: "type": "[ExtractGroups.Bar]",
|
60 | 97 | // CHECK-NEXT: "isStatic": "false",
|
61 | 98 | // CHECK-NEXT: "isComputed": "false",
|
| 99 | +// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractGroups.swift", |
| 100 | +// CHECK-NEXT: "line": 12, |
62 | 101 | // CHECK-NEXT: "valueKind": "Array",
|
63 | 102 | // CHECK-NEXT: "value": [
|
64 | 103 | // CHECK-NEXT: {
|
|
75 | 114 | // CHECK-NEXT: {
|
76 | 115 | // CHECK-NEXT: "typeName": "ExtractGroups.Dictionaries",
|
77 | 116 | // CHECK-NEXT: "kind": "struct",
|
| 117 | +// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractGroups.swift", |
| 118 | +// CHECK-NEXT: "line": 15, |
78 | 119 | // CHECK-NEXT: "properties": [
|
79 | 120 | // CHECK-NEXT: {
|
80 | 121 | // CHECK-NEXT: "label": "dict1",
|
81 | 122 | // CHECK-NEXT: "type": "[Swift.String : Swift.Int]",
|
82 | 123 | // CHECK-NEXT: "isStatic": "false",
|
83 | 124 | // CHECK-NEXT: "isComputed": "false",
|
| 125 | +// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractGroups.swift", |
| 126 | +// CHECK-NEXT: "line": 16, |
84 | 127 | // CHECK-NEXT: "valueKind": "Dictionary",
|
85 | 128 | // CHECK-NEXT: "value": [
|
86 | 129 | // CHECK-NEXT: {
|
|
120 | 163 | // CHECK-NEXT: "type": "[Swift.Int : [Swift.String]]",
|
121 | 164 | // CHECK-NEXT: "isStatic": "false",
|
122 | 165 | // CHECK-NEXT: "isComputed": "false",
|
| 166 | +// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractGroups.swift", |
| 167 | +// CHECK-NEXT: "line": 17, |
123 | 168 | // CHECK-NEXT: "valueKind": "Dictionary",
|
124 | 169 | // CHECK-NEXT: "value": [
|
125 | 170 | // CHECK-NEXT: {
|
|
167 | 212 | // CHECK-NEXT: "type": "[Swift.String : ExtractGroups.Foo]",
|
168 | 213 | // CHECK-NEXT: "isStatic": "false",
|
169 | 214 | // CHECK-NEXT: "isComputed": "false",
|
| 215 | +// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractGroups.swift", |
| 216 | +// CHECK-NEXT: "line": 21, |
170 | 217 | // CHECK-NEXT: "valueKind": "Dictionary",
|
171 | 218 | // CHECK-NEXT: "value": [
|
172 | 219 | // CHECK-NEXT: {
|
|
199 | 246 | // CHECK-NEXT: {
|
200 | 247 | // CHECK-NEXT: "typeName": "ExtractGroups.Tuples",
|
201 | 248 | // CHECK-NEXT: "kind": "struct",
|
| 249 | +// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractGroups.swift", |
| 250 | +// CHECK-NEXT: "line": 27, |
202 | 251 | // CHECK-NEXT: "properties": [
|
203 | 252 | // CHECK-NEXT: {
|
204 | 253 | // CHECK-NEXT: "label": "tuple1",
|
205 | 254 | // CHECK-NEXT: "type": "(Swift.String, ExtractGroups.Bar)",
|
206 | 255 | // CHECK-NEXT: "isStatic": "false",
|
207 | 256 | // CHECK-NEXT: "isComputed": "false",
|
| 257 | +// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractGroups.swift", |
| 258 | +// CHECK-NEXT: "line": 28, |
208 | 259 | // CHECK-NEXT: "valueKind": "Tuple",
|
209 | 260 | // CHECK-NEXT: "value": [
|
210 | 261 | // CHECK-NEXT: {
|
|
227 | 278 | // CHECK-NEXT: "type": "(lat: Swift.Float, lng: Swift.Float)",
|
228 | 279 | // CHECK-NEXT: "isStatic": "false",
|
229 | 280 | // CHECK-NEXT: "isComputed": "false",
|
| 281 | +// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractGroups.swift", |
| 282 | +// CHECK-NEXT: "line": 29, |
230 | 283 | // CHECK-NEXT: "valueKind": "Tuple",
|
231 | 284 | // CHECK-NEXT: "value": [
|
232 | 285 | // CHECK-NEXT: {
|
|
248 | 301 | // CHECK-NEXT: "type": "Swift.Void",
|
249 | 302 | // CHECK-NEXT: "isStatic": "false",
|
250 | 303 | // CHECK-NEXT: "isComputed": "false",
|
| 304 | +// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractGroups.swift", |
| 305 | +// CHECK-NEXT: "line": 30, |
251 | 306 | // CHECK-NEXT: "valueKind": "Tuple",
|
252 | 307 | // CHECK-NEXT: "value": []
|
253 | 308 | // CHECK-NEXT: }
|
254 | 309 | // CHECK-NEXT: ]
|
255 | 310 | // CHECK-NEXT: }
|
256 | 311 | // CHECK-NEXT:]
|
257 |
| - |
258 |
| -protocol MyProto {} |
259 |
| - |
260 |
| -public struct Arrays : MyProto { |
261 |
| - let array1: [Int] = [1, 2, 3] |
262 |
| - let array2: [Foo] = [Bar(), 1, "hi"] |
263 |
| - let array3: [Bar] = [Bar()] |
264 |
| -} |
265 |
| - |
266 |
| -public struct Dictionaries : MyProto { |
267 |
| - let dict1: [String: Int] = ["One": 1, "Two": 2, "Three": 3] |
268 |
| - let dict2: [Int: [String]] = [ |
269 |
| - 1: ["a", "b", "c"], |
270 |
| - 2: ["z"] |
271 |
| - ] |
272 |
| - let dict3: [String: Foo] = [ |
273 |
| - "Bar": Bar(), |
274 |
| - "Int": 42 |
275 |
| - ] |
276 |
| -} |
277 |
| - |
278 |
| -public struct Tuples : MyProto { |
279 |
| - let tuple1: (String, Bar) = ("foo", Bar()) |
280 |
| - let tuple2: (lat: Float, lng: Float) = (lat: 42.7, lng: -73.9) |
281 |
| - let tuple3: Void = () |
282 |
| -} |
283 |
| - |
284 |
| -public protocol Foo {} |
285 |
| -public struct Bar: Foo {} |
286 |
| -extension Int: Foo {} |
287 |
| -extension String: Foo {} |
|
0 commit comments