@@ -22,8 +22,18 @@ public struct MyType {
2222 }
2323}
2424
25+ struct Item {
26+ var foo : String
27+ let bar : String
28+ }
29+
2530public 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
2737}
2838
2939// CHECK: [
@@ -32,8 +42,7 @@ public struct KeyPaths: MyProto {
3242// CHECK-NEXT: "mangledTypeName": "15ExtractKeyPaths0bC0V",
3343// CHECK-NEXT: "kind": "struct",
3444// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractKeyPaths.swift",
35- // CHECK-NEXT: "line": 25,
36- // CHECK-NEXT: "conformances": [
45+ // CHECK: "conformances": [
3746// CHECK-NEXT: "ExtractKeyPaths.MyProto"
3847// CHECK-NEXT: ],
3948// CHECK-NEXT: "allConformances": [
@@ -42,16 +51,115 @@ public struct KeyPaths: MyProto {
4251// CHECK-NEXT: "conformanceDefiningModule": "ExtractKeyPaths"
4352// CHECK-NEXT: }
4453// 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: },
47155// CHECK-NEXT: {
48- // CHECK-NEXT: "label": "nestedVariable ",
156+ // CHECK-NEXT: "label": "nestedKeyPath ",
49157// CHECK-NEXT: "type": "Swift.WritableKeyPath<ExtractKeyPaths.MyType, Swift.String>",
50158// CHECK-NEXT: "mangledTypeName": "n/a - deprecated",
51159// CHECK-NEXT: "isStatic": "true",
52160// CHECK-NEXT: "isComputed": "false",
53161// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractKeyPaths.swift",
54- // CHECK-NEXT: "line": 26 ,
162+ // CHECK-NEXT: "line": 36 ,
55163// CHECK-NEXT: "valueKind": "KeyPath",
56164// CHECK-NEXT: "value": {
57165// CHECK-NEXT: "path": "nested.foo.bar.baz",
0 commit comments