Skip to content

Commit 0b74e7b

Browse files
authored
Merge pull request #62524 from quinntaylor/const-extract-test-refactor
[Compile Time Constant Extraction] Split `fields.swift` test file into 3 files with clear scoping and naming.
2 parents 387d362 + a617c34 commit 0b74e7b

File tree

4 files changed

+294
-213
lines changed

4 files changed

+294
-213
lines changed
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
// RUN: %empty-directory(%t)
2+
// RUN: echo "[MyProto]" > %t/protocols.json
3+
4+
// RUN: %target-swift-frontend -typecheck -emit-const-values-path %t/ExtractCalls.swiftconstvalues -const-gather-protocols-file %t/protocols.json -primary-file %s
5+
// RUN: cat %t/ExtractCalls.swiftconstvalues 2>&1 | %FileCheck %s
6+
7+
// CHECK: [
8+
// CHECK-NEXT: {
9+
// CHECK-NEXT: "typeName": "ExtractCalls.Foo",
10+
// CHECK-NEXT: "kind": "struct",
11+
// CHECK-NEXT: "properties": [
12+
// CHECK-NEXT: {
13+
// CHECK-NEXT: "label": "init1",
14+
// CHECK-NEXT: "type": "ExtractCalls.Bar",
15+
// CHECK-NEXT: "isStatic": "false",
16+
// CHECK-NEXT: "isComputed": "false",
17+
// CHECK-NEXT: "valueKind": "InitCall",
18+
// CHECK-NEXT: "value": {
19+
// CHECK-NEXT: "type": "ExtractCalls.Bar",
20+
// CHECK-NEXT: "arguments": []
21+
// CHECK-NEXT: }
22+
// CHECK-NEXT: },
23+
// CHECK-NEXT: {
24+
// CHECK-NEXT: "label": "init2",
25+
// CHECK-NEXT: "type": "ExtractCalls.Bat",
26+
// CHECK-NEXT: "isStatic": "false",
27+
// CHECK-NEXT: "isComputed": "false",
28+
// CHECK-NEXT: "valueKind": "InitCall",
29+
// CHECK-NEXT: "value": {
30+
// CHECK-NEXT: "type": "ExtractCalls.Bat",
31+
// CHECK-NEXT: "arguments": [
32+
// CHECK-NEXT: {
33+
// CHECK-NEXT: "label": "buz",
34+
// CHECK-NEXT: "type": "Swift.String",
35+
// CHECK-NEXT: "valueKind": "RawLiteral",
36+
// CHECK-NEXT: "value": "\"\""
37+
// CHECK-NEXT: },
38+
// CHECK-NEXT: {
39+
// CHECK-NEXT: "label": "fuz",
40+
// CHECK-NEXT: "type": "Swift.Int",
41+
// CHECK-NEXT: "valueKind": "RawLiteral",
42+
// CHECK-NEXT: "value": "0"
43+
// CHECK-NEXT: }
44+
// CHECK-NEXT: ]
45+
// CHECK-NEXT: }
46+
// CHECK-NEXT: },
47+
// CHECK-NEXT: {
48+
// CHECK-NEXT: "label": "init3",
49+
// CHECK-NEXT: "type": "ExtractCalls.Bat",
50+
// CHECK-NEXT: "isStatic": "false",
51+
// CHECK-NEXT: "isComputed": "false",
52+
// CHECK-NEXT: "valueKind": "InitCall",
53+
// CHECK-NEXT: "value": {
54+
// CHECK-NEXT: "type": "ExtractCalls.Bat",
55+
// CHECK-NEXT: "arguments": [
56+
// CHECK-NEXT: {
57+
// CHECK-NEXT: "label": "buz",
58+
// CHECK-NEXT: "type": "Swift.String",
59+
// CHECK-NEXT: "valueKind": "RawLiteral",
60+
// CHECK-NEXT: "value": "\"hello\""
61+
// CHECK-NEXT: },
62+
// CHECK-NEXT: {
63+
// CHECK-NEXT: "label": "fuz",
64+
// CHECK-NEXT: "type": "Swift.Int",
65+
// CHECK-NEXT: "valueKind": "Runtime"
66+
// CHECK-NEXT: }
67+
// CHECK-NEXT: ]
68+
// CHECK-NEXT: }
69+
// CHECK-NEXT: },
70+
// CHECK-NEXT: {
71+
// CHECK-NEXT: "label": "func1",
72+
// CHECK-NEXT: "type": "Swift.Int",
73+
// CHECK-NEXT: "isStatic": "false",
74+
// CHECK-NEXT: "isComputed": "false",
75+
// CHECK-NEXT: "valueKind": "Runtime"
76+
// CHECK-NEXT: },
77+
// CHECK-NEXT: {
78+
// CHECK-NEXT: "label": "ext1",
79+
// CHECK-NEXT: "type": "ExtractCalls.Foo.Boo",
80+
// CHECK-NEXT: "isStatic": "false",
81+
// CHECK-NEXT: "isComputed": "true",
82+
// CHECK-NEXT: "valueKind": "InitCall",
83+
// CHECK-NEXT: "value": {
84+
// CHECK-NEXT: "type": "ExtractCalls.Foo.Boo",
85+
// CHECK-NEXT: "arguments": []
86+
// CHECK-NEXT: }
87+
// CHECK-NEXT: }
88+
// CHECK-NEXT: ]
89+
// CHECK-NEXT: }
90+
// CHECK-NEXT:]
91+
92+
protocol MyProto {}
93+
94+
public struct Foo : MyProto {
95+
let init1 = Bar()
96+
let init2: Bat = .init()
97+
let init3 = Bat(buz: "hello", fuz: adder(2, 3))
98+
let func1: Int = adder(2, 3)
99+
}
100+
101+
102+
extension Foo {
103+
struct Boo {}
104+
105+
var ext1: Boo { Boo() }
106+
}
107+
108+
func adder(_ x: Int, _ y: Int) -> Int {
109+
x + y
110+
}
111+
112+
public struct Bar {}
113+
public struct Bat {
114+
let buz: String
115+
let fuz: Int
116+
117+
init(buz: String = "", fuz: Int = 0) {
118+
self.buz = buz
119+
self.fuz = fuz
120+
}
121+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// RUN: %empty-directory(%t)
2+
// RUN: echo "[MyProto]" > %t/protocols.json
3+
4+
// RUN: %target-swift-frontend -typecheck -emit-const-values-path %t/ExtractGroups.swiftconstvalues -const-gather-protocols-file %t/protocols.json -primary-file %s
5+
// RUN: cat %t/ExtractGroups.swiftconstvalues 2>&1 | %FileCheck %s
6+
7+
// CHECK: [
8+
// CHECK-NEXT: {
9+
// CHECK-NEXT: "typeName": "ExtractGroups.Arrays",
10+
// CHECK-NEXT: "kind": "struct",
11+
// CHECK-NEXT: "properties": [
12+
// CHECK-NEXT: {
13+
// CHECK-NEXT: "label": "array1",
14+
// CHECK-NEXT: "type": "[Swift.Int]",
15+
// CHECK-NEXT: "isStatic": "false",
16+
// CHECK-NEXT: "isComputed": "false",
17+
// CHECK-NEXT: "valueKind": "RawLiteral",
18+
// CHECK-NEXT: "value": "[1, 2, 3]"
19+
// CHECK-NEXT: }
20+
// CHECK-NEXT: ]
21+
// CHECK-NEXT: },
22+
// CHECK-NEXT: {
23+
// CHECK-NEXT: "typeName": "ExtractGroups.Dictionaries",
24+
// CHECK-NEXT: "kind": "struct",
25+
// CHECK-NEXT: "properties": [
26+
// CHECK-NEXT: {
27+
// CHECK-NEXT: "label": "dict1",
28+
// CHECK-NEXT: "type": "[Swift.String : Swift.Int]",
29+
// CHECK-NEXT: "isStatic": "false",
30+
// CHECK-NEXT: "isComputed": "false",
31+
// CHECK-NEXT: "valueKind": "RawLiteral",
32+
// CHECK-NEXT: "value": "[(\"One\", 1), (\"Two\", 2), (\"Three\", 3)]"
33+
// CHECK-NEXT: }
34+
// CHECK-NEXT: ]
35+
// CHECK-NEXT: },
36+
// CHECK-NEXT: {
37+
// CHECK-NEXT: "typeName": "ExtractGroups.Tuples",
38+
// CHECK-NEXT: "kind": "struct",
39+
// CHECK-NEXT: "properties": [
40+
// CHECK-NEXT: {
41+
// CHECK-NEXT: "label": "tuple1",
42+
// CHECK-NEXT: "type": "(Swift.Int, Swift.Float)",
43+
// CHECK-NEXT: "isStatic": "false",
44+
// CHECK-NEXT: "isComputed": "false",
45+
// CHECK-NEXT: "valueKind": "RawLiteral",
46+
// CHECK-NEXT: "value": "(42, 6.6)"
47+
// CHECK-NEXT: }
48+
// CHECK-NEXT: ]
49+
// CHECK-NEXT: }
50+
// CHECK-NEXT:]
51+
52+
protocol MyProto {}
53+
54+
public struct Arrays : MyProto {
55+
let array1: [Int] = [1, 2, 3]
56+
}
57+
58+
public struct Dictionaries : MyProto {
59+
let dict1: [String: Int] = ["One": 1, "Two": 2, "Three": 3]
60+
}
61+
62+
public struct Tuples : MyProto {
63+
let tuple1: (Int, Float) = (42, 6.6)
64+
}
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
// RUN: %empty-directory(%t)
2+
// RUN: echo "[MyProto]" > %t/protocols.json
3+
4+
// RUN: %target-swift-frontend -typecheck -emit-const-values-path %t/ExtractLiterals.swiftconstvalues -const-gather-protocols-file %t/protocols.json -primary-file %s
5+
// RUN: cat %t/ExtractLiterals.swiftconstvalues 2>&1 | %FileCheck %s
6+
7+
// CHECK: [
8+
// CHECK-NEXT: {
9+
// CHECK-NEXT: "typeName": "ExtractLiterals.Bools",
10+
// CHECK-NEXT: "kind": "struct",
11+
// CHECK-NEXT: "properties": [
12+
// CHECK-NEXT: {
13+
// CHECK-NEXT: "label": "bool1",
14+
// CHECK-NEXT: "type": "Swift.Bool",
15+
// CHECK-NEXT: "isStatic": "false",
16+
// CHECK-NEXT: "isComputed": "false",
17+
// CHECK-NEXT: "valueKind": "RawLiteral",
18+
// CHECK-NEXT: "value": "false"
19+
// CHECK-NEXT: },
20+
// CHECK-NEXT: {
21+
// CHECK-NEXT: "label": "bool2",
22+
// CHECK-NEXT: "type": "Swift.Bool?",
23+
// CHECK-NEXT: "isStatic": "false",
24+
// CHECK-NEXT: "isComputed": "false",
25+
// CHECK-NEXT: "valueKind": "RawLiteral",
26+
// CHECK-NEXT: "value": "nil"
27+
// CHECK-NEXT: }
28+
// CHECK-NEXT: ]
29+
// CHECK-NEXT: },
30+
// CHECK-NEXT: {
31+
// CHECK-NEXT: "typeName": "ExtractLiterals.Ints",
32+
// CHECK-NEXT: "kind": "struct",
33+
// CHECK-NEXT: "properties": [
34+
// CHECK-NEXT: {
35+
// CHECK-NEXT: "label": "int1",
36+
// CHECK-NEXT: "type": "Swift.Int",
37+
// CHECK-NEXT: "isStatic": "true",
38+
// CHECK-NEXT: "isComputed": "false",
39+
// CHECK-NEXT: "valueKind": "RawLiteral",
40+
// CHECK-NEXT: "value": "1"
41+
// CHECK-NEXT: },
42+
// CHECK-NEXT: {
43+
// CHECK-NEXT: "label": "int2",
44+
// CHECK-NEXT: "type": "Swift.Int",
45+
// CHECK-NEXT: "isStatic": "false",
46+
// CHECK-NEXT: "isComputed": "true",
47+
// CHECK-NEXT: "valueKind": "RawLiteral",
48+
// CHECK-NEXT: "value": "2"
49+
// CHECK-NEXT: },
50+
// CHECK-NEXT: {
51+
// CHECK-NEXT: "label": "int3",
52+
// CHECK-NEXT: "type": "Swift.Int",
53+
// CHECK-NEXT: "isStatic": "true",
54+
// CHECK-NEXT: "isComputed": "true",
55+
// CHECK-NEXT: "valueKind": "RawLiteral",
56+
// CHECK-NEXT: "value": "3"
57+
// CHECK-NEXT: }
58+
// CHECK-NEXT: ]
59+
// CHECK-NEXT: },
60+
// CHECK-NEXT: {
61+
// CHECK-NEXT: "typeName": "ExtractLiterals.Floats",
62+
// CHECK-NEXT: "kind": "struct",
63+
// CHECK-NEXT: "properties": [
64+
// CHECK-NEXT: {
65+
// CHECK-NEXT: "label": "float1",
66+
// CHECK-NEXT: "type": "Swift.Float",
67+
// CHECK-NEXT: "isStatic": "true",
68+
// CHECK-NEXT: "isComputed": "false",
69+
// CHECK-NEXT: "valueKind": "RawLiteral",
70+
// CHECK-NEXT: "value": "42.2"
71+
// CHECK-NEXT: }
72+
// CHECK-NEXT: ]
73+
// CHECK-NEXT: },
74+
// CHECK-NEXT: {
75+
// CHECK-NEXT: "typeName": "ExtractLiterals.Strings",
76+
// CHECK-NEXT: "kind": "struct",
77+
// CHECK-NEXT: "properties": [
78+
// CHECK-NEXT: {
79+
// CHECK-NEXT: "label": "string1",
80+
// CHECK-NEXT: "type": "Swift.String",
81+
// CHECK-NEXT: "isStatic": "false",
82+
// CHECK-NEXT: "isComputed": "false",
83+
// CHECK-NEXT: "valueKind": "RawLiteral",
84+
// CHECK-NEXT: "value": "\"Hello, World\""
85+
// CHECK-NEXT: }
86+
// CHECK-NEXT: ]
87+
// CHECK-NEXT: }
88+
// CHECK-NEXT:]
89+
90+
protocol MyProto {}
91+
92+
public struct Bools : MyProto {
93+
let bool1: Bool = false
94+
let bool2: Bool? = nil
95+
}
96+
97+
public struct Ints : MyProto {
98+
static _const let int1: Int = 1
99+
var int2: Int { 2 }
100+
static var int3: Int { return 3 }
101+
}
102+
103+
public struct Floats : MyProto {
104+
static let float1: Float = 42.2
105+
}
106+
107+
public struct Strings : MyProto {
108+
let string1: String = "Hello, World"
109+
}

0 commit comments

Comments
 (0)