@@ -11,6 +11,7 @@ import Foundation
1111import SourceKit
1212#endif
1313
14+ // MARK: - Basic properties of SourceKitVariant
1415public struct SourceKitVariant {
1516 public var array : [ SourceKitVariant ] ? {
1617 get { return box. array }
@@ -56,6 +57,111 @@ public struct SourceKitVariant {
5657 fileprivate let box : _VariantBox
5758}
5859
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+
59165// MARK: - ExpressibleByStringLiteral
60166extension SourceKitVariant : ExpressibleByStringLiteral {
61167 public init ( stringLiteral value: String ) {
@@ -334,26 +440,6 @@ extension SourceKitVariant {
334440 }
335441}
336442
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-
357443// MARK: - Custom
358444extension SourceKitVariant {
359445 var attributes : [ SourceKitVariant ] ? { return self [ " key.attributes " ] ? . array }
0 commit comments