@@ -11,6 +11,7 @@ import Foundation
11
11
import SourceKit
12
12
#endif
13
13
14
+ // MARK: - Basic properties of SourceKitVariant
14
15
public struct SourceKitVariant {
15
16
public var array : [ SourceKitVariant ] ? {
16
17
get { return box. array }
@@ -56,6 +57,111 @@ public struct SourceKitVariant {
56
57
fileprivate let box : _VariantBox
57
58
}
58
59
60
+ // MARK: - Convenient properties for SwiftDocKey
61
+ extension SourceKitVariant {
62
+ /// Annotated declaration (String).
63
+ public var annotatedDeclaration : String ?
64
+ { return self [ . annotatedDeclaration] ? . string }
65
+ /// Body length (Int).
66
+ public var bodyLength : Int ?
67
+ { return self [ . bodyLength] ? . int }
68
+ /// Body offset (Int).
69
+ public var bodyOffset : Int ? { return self [ . bodyOffset] ? . int }
70
+ /// Diagnostic stage (String).
71
+ public var diagnosticStage : String ? { return self [ . diagnosticStage] ? . string }
72
+ /// File path (String).
73
+ public var filePath : String ? { return self [ . filePath] ? . string }
74
+ /// Full XML docs (String).
75
+ public var fullXMLDocs : String ? { return self [ . fullXMLDocs] ? . string }
76
+ /// Kind (SourceKitVariant.string).
77
+ public var kind : SourceKitVariant ? { return self [ . kind] }
78
+ /// Length (Int).
79
+ public var length : Int ? { return self [ . length] ? . int }
80
+ /// Name (String).
81
+ public var name : String ? { return self [ . name] ? . string }
82
+ /// Name length (Int).
83
+ public var nameLength : Int ? { return self [ . nameLength] ? . int }
84
+ /// Name offset (Int).
85
+ public var nameOffset : Int ? { return self [ . nameOffset] ? . int }
86
+ /// Offset (Int).
87
+ public var offset : Int ? { return self [ . offset] ? . int }
88
+ /// Substructure ([SourceKitVariant]).
89
+ public var substructure : [ SourceKitVariant ] ? { return self [ . substructure] ? . array }
90
+ /// Syntax map ([SourceKitVariant]).
91
+ public var syntaxMap : [ SourceKitVariant ] ? { return self [ . syntaxMap] ? . array }
92
+ /// Type name (String).
93
+ public var typeName : String ? { return self [ . typeName] ? . string }
94
+ /// Inheritedtype ([SourceKitVariant])
95
+ public var inheritedtypes : [ SourceKitVariant ] ? { return self [ . inheritedtypes] ? . array }
96
+ }
97
+
98
+ // MARK: - Accessors for SwiftDocKey
99
+ extension SourceKitVariant {
100
+ public static func annotatedDeclaration( _ variant: SourceKitVariant ) -> String ? {
101
+ return variant [ . annotatedDeclaration] ? . string
102
+ }
103
+
104
+ public static func bodyLength( _ variant: SourceKitVariant ) -> Int ? {
105
+ return variant [ . bodyLength] ? . int
106
+ }
107
+
108
+ public static func bodyOffset( _ variant: SourceKitVariant ) -> Int ? {
109
+ return variant [ . bodyOffset] ? . int
110
+ }
111
+
112
+ public static func diagnosticStage( _ variant: SourceKitVariant ) -> String ? {
113
+ return variant [ . diagnosticStage] ? . string
114
+ }
115
+
116
+ public static func filePath( _ variant: SourceKitVariant ) -> String ? {
117
+ return variant [ . filePath] ? . string
118
+ }
119
+
120
+ public static func fullXMLDocs( _ variant: SourceKitVariant ) -> String ? {
121
+ return variant [ . fullXMLDocs] ? . string
122
+ }
123
+
124
+ public static func kind( _ variant: SourceKitVariant ) -> SourceKitVariant ? {
125
+ return variant [ . kind]
126
+ }
127
+
128
+ public static func length( _ variant: SourceKitVariant ) -> Int ? {
129
+ return variant [ . length] ? . int
130
+ }
131
+
132
+ public static func name( _ variant: SourceKitVariant ) -> String ? {
133
+ return variant [ . name] ? . string
134
+ }
135
+
136
+ public static func nameLength( _ variant: SourceKitVariant ) -> Int ? {
137
+ return variant [ . nameLength] ? . int
138
+ }
139
+
140
+ public static func nameOffset( _ variant: SourceKitVariant ) -> Int ? {
141
+ return variant [ . nameOffset] ? . int
142
+ }
143
+
144
+ public static func offset( _ variant: SourceKitVariant ) -> Int ? {
145
+ return variant [ . offset] ? . int
146
+ }
147
+
148
+ public static func substructure( _ variant: SourceKitVariant ) -> [ SourceKitVariant ] ? {
149
+ return variant [ . substructure] ? . array
150
+ }
151
+
152
+ public static func syntaxMap( _ variant: SourceKitVariant ) -> [ SourceKitVariant ] ? {
153
+ return variant [ . syntaxMap] ? . array
154
+ }
155
+
156
+ public static func typeName( _ variant: SourceKitVariant ) -> String ? {
157
+ return variant [ . typeName] ? . string
158
+ }
159
+
160
+ public static func inheritedtypes( _ variant: SourceKitVariant ) -> [ SourceKitVariant ] ? {
161
+ return variant [ . inheritedtypes] ? . array
162
+ }
163
+ }
164
+
59
165
// MARK: - ExpressibleByStringLiteral
60
166
extension SourceKitVariant : ExpressibleByStringLiteral {
61
167
public init ( stringLiteral value: String ) {
@@ -334,26 +440,6 @@ extension SourceKitVariant {
334
440
}
335
441
}
336
442
337
- // MARK: - SwiftDocKey
338
- extension SourceKitVariant {
339
- var annotatedDeclaration : String ? { return self [ . annotatedDeclaration] ? . string }
340
- var bodyLength : Int ? { return self [ . bodyLength] ? . int }
341
- var bodyOffset : Int ? { return self [ . bodyOffset] ? . int }
342
- var diagnosticStage : String ? { return self [ . diagnosticStage] ? . string }
343
- var filePath : String ? { return self [ . filePath] ? . string }
344
- var fullXMLDocs : String ? { return self [ . fullXMLDocs] ? . string }
345
- var kind : SourceKitVariant ? { return self [ . kind] }
346
- var length : Int ? { return self [ . length] ? . int }
347
- var name : String ? { return self [ . name] ? . string }
348
- var nameLength : Int ? { return self [ . nameLength] ? . int }
349
- var nameOffset : Int ? { return self [ . nameOffset] ? . int }
350
- var offset : Int ? { return self [ . offset] ? . int }
351
- var substructure : [ SourceKitVariant ] ? { return self [ . substructure] ? . array }
352
- var syntaxMap : [ SourceKitVariant ] ? { return self [ . syntaxMap] ? . array }
353
- var typeName : String ? { return self [ . typeName] ? . string }
354
- var inheritedtypes : [ SourceKitVariant ] ? { return self [ . inheritedtypes] ? . array }
355
- }
356
-
357
443
// MARK: - Custom
358
444
extension SourceKitVariant {
359
445
var attributes : [ SourceKitVariant ] ? { return self [ " key.attributes " ] ? . array }
0 commit comments