@@ -22,8 +22,18 @@ public struct MyType {
22
22
}
23
23
}
24
24
25
+ struct Item {
26
+ var foo : String
27
+ let bar : String
28
+ }
29
+
25
30
public struct KeyPaths : MyProto {
26
- static let nestedVariable = \MyType . nested. foo. bar. baz
31
+ static let keyPath1 : PartialKeyPath < Item > = \Item . foo
32
+ static var keyPath2 : KeyPath < Item , String > = \Item . foo
33
+ static var keyPath3 : WritableKeyPath < Item , String > = \Item . foo
34
+ static var keyPath4 : PartialKeyPath < Item > = \Item . bar
35
+ static var keyPath5 : KeyPath < Item , String > = \Item . bar
36
+ static let nestedKeyPath = \MyType . nested. foo. bar. baz
27
37
}
28
38
29
39
// CHECK: [
@@ -32,8 +42,7 @@ public struct KeyPaths: MyProto {
32
42
// CHECK-NEXT: "mangledTypeName": "15ExtractKeyPaths0bC0V",
33
43
// CHECK-NEXT: "kind": "struct",
34
44
// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractKeyPaths.swift",
35
- // CHECK-NEXT: "line": 25,
36
- // CHECK-NEXT: "conformances": [
45
+ // CHECK: "conformances": [
37
46
// CHECK-NEXT: "ExtractKeyPaths.MyProto"
38
47
// CHECK-NEXT: ],
39
48
// CHECK-NEXT: "allConformances": [
@@ -42,16 +51,115 @@ public struct KeyPaths: MyProto {
42
51
// CHECK-NEXT: "conformanceDefiningModule": "ExtractKeyPaths"
43
52
// CHECK-NEXT: }
44
53
// CHECK-NEXT: ],
45
- // CHECK-NEXT: "associatedTypeAliases": [],
46
- // CHECK-NEXT: "properties": [
54
+ // CHECK: "properties": [
55
+ // CHECK-NEXT: {
56
+ // CHECK-NEXT: "label": "keyPath1",
57
+ // CHECK-NEXT: "type": "Swift.PartialKeyPath<ExtractKeyPaths.Item>",
58
+ // CHECK-NEXT: "mangledTypeName": "n/a - deprecated",
59
+ // CHECK-NEXT: "isStatic": "true",
60
+ // CHECK-NEXT: "isComputed": "false",
61
+ // CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractKeyPaths.swift",
62
+ // CHECK-NEXT: "line": 31,
63
+ // CHECK-NEXT: "valueKind": "KeyPath",
64
+ // CHECK-NEXT: "value": {
65
+ // CHECK-NEXT: "path": "foo",
66
+ // CHECK-NEXT: "rootType": "ExtractKeyPaths.Item",
67
+ // CHECK-NEXT: "components": [
68
+ // CHECK-NEXT: {
69
+ // CHECK-NEXT: "label": "foo",
70
+ // CHECK-NEXT: "type": "Swift.String"
71
+ // CHECK-NEXT: }
72
+ // CHECK-NEXT: ]
73
+ // CHECK-NEXT: }
74
+ // CHECK-NEXT: },
75
+ // CHECK-NEXT: {
76
+ // CHECK-NEXT: "label": "keyPath2",
77
+ // CHECK-NEXT: "type": "Swift.KeyPath<ExtractKeyPaths.Item, Swift.String>",
78
+ // CHECK-NEXT: "mangledTypeName": "n/a - deprecated",
79
+ // CHECK-NEXT: "isStatic": "true",
80
+ // CHECK-NEXT: "isComputed": "false",
81
+ // CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractKeyPaths.swift",
82
+ // CHECK-NEXT: "line": 32,
83
+ // CHECK-NEXT: "valueKind": "KeyPath",
84
+ // CHECK-NEXT: "value": {
85
+ // CHECK-NEXT: "path": "foo",
86
+ // CHECK-NEXT: "rootType": "ExtractKeyPaths.Item",
87
+ // CHECK-NEXT: "components": [
88
+ // CHECK-NEXT: {
89
+ // CHECK-NEXT: "label": "foo",
90
+ // CHECK-NEXT: "type": "Swift.String"
91
+ // CHECK-NEXT: }
92
+ // CHECK-NEXT: ]
93
+ // CHECK-NEXT: }
94
+ // CHECK-NEXT: },
95
+ // CHECK-NEXT: {
96
+ // CHECK-NEXT: "label": "keyPath3",
97
+ // CHECK-NEXT: "type": "Swift.WritableKeyPath<ExtractKeyPaths.Item, Swift.String>",
98
+ // CHECK-NEXT: "mangledTypeName": "n/a - deprecated",
99
+ // CHECK-NEXT: "isStatic": "true",
100
+ // CHECK-NEXT: "isComputed": "false",
101
+ // CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractKeyPaths.swift",
102
+ // CHECK-NEXT: "line": 33,
103
+ // CHECK-NEXT: "valueKind": "KeyPath",
104
+ // CHECK-NEXT: "value": {
105
+ // CHECK-NEXT: "path": "foo",
106
+ // CHECK-NEXT: "rootType": "ExtractKeyPaths.Item",
107
+ // CHECK-NEXT: "components": [
108
+ // CHECK-NEXT: {
109
+ // CHECK-NEXT: "label": "foo",
110
+ // CHECK-NEXT: "type": "Swift.String"
111
+ // CHECK-NEXT: }
112
+ // CHECK-NEXT: ]
113
+ // CHECK-NEXT: }
114
+ // CHECK-NEXT: },
115
+ // CHECK-NEXT: {
116
+ // CHECK-NEXT: "label": "keyPath4",
117
+ // CHECK-NEXT: "type": "Swift.PartialKeyPath<ExtractKeyPaths.Item>",
118
+ // CHECK-NEXT: "mangledTypeName": "n/a - deprecated",
119
+ // CHECK-NEXT: "isStatic": "true",
120
+ // CHECK-NEXT: "isComputed": "false",
121
+ // CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractKeyPaths.swift",
122
+ // CHECK-NEXT: "line": 34,
123
+ // CHECK-NEXT: "valueKind": "KeyPath",
124
+ // CHECK-NEXT: "value": {
125
+ // CHECK-NEXT: "path": "bar",
126
+ // CHECK-NEXT: "rootType": "ExtractKeyPaths.Item",
127
+ // CHECK-NEXT: "components": [
128
+ // CHECK-NEXT: {
129
+ // CHECK-NEXT: "label": "bar",
130
+ // CHECK-NEXT: "type": "Swift.String"
131
+ // CHECK-NEXT: }
132
+ // CHECK-NEXT: ]
133
+ // CHECK-NEXT: }
134
+ // CHECK-NEXT: },
135
+ // CHECK-NEXT: {
136
+ // CHECK-NEXT: "label": "keyPath5",
137
+ // CHECK-NEXT: "type": "Swift.KeyPath<ExtractKeyPaths.Item, Swift.String>",
138
+ // CHECK-NEXT: "mangledTypeName": "n/a - deprecated",
139
+ // CHECK-NEXT: "isStatic": "true",
140
+ // CHECK-NEXT: "isComputed": "false",
141
+ // CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractKeyPaths.swift",
142
+ // CHECK-NEXT: "line": 35,
143
+ // CHECK-NEXT: "valueKind": "KeyPath",
144
+ // CHECK-NEXT: "value": {
145
+ // CHECK-NEXT: "path": "bar",
146
+ // CHECK-NEXT: "rootType": "ExtractKeyPaths.Item",
147
+ // CHECK-NEXT: "components": [
148
+ // CHECK-NEXT: {
149
+ // CHECK-NEXT: "label": "bar",
150
+ // CHECK-NEXT: "type": "Swift.String"
151
+ // CHECK-NEXT: }
152
+ // CHECK-NEXT: ]
153
+ // CHECK-NEXT: }
154
+ // CHECK-NEXT: },
47
155
// CHECK-NEXT: {
48
- // CHECK-NEXT: "label": "nestedVariable ",
156
+ // CHECK-NEXT: "label": "nestedKeyPath ",
49
157
// CHECK-NEXT: "type": "Swift.WritableKeyPath<ExtractKeyPaths.MyType, Swift.String>",
50
158
// CHECK-NEXT: "mangledTypeName": "n/a - deprecated",
51
159
// CHECK-NEXT: "isStatic": "true",
52
160
// CHECK-NEXT: "isComputed": "false",
53
161
// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractKeyPaths.swift",
54
- // CHECK-NEXT: "line": 26 ,
162
+ // CHECK-NEXT: "line": 36 ,
55
163
// CHECK-NEXT: "valueKind": "KeyPath",
56
164
// CHECK-NEXT: "value": {
57
165
// CHECK-NEXT: "path": "nested.foo.bar.baz",
0 commit comments