@@ -66,17 +66,20 @@ public struct RawKeyPathComponentListSyntax: RawSyntaxNodeProtocol {
66
66
public struct RawKeyPathComponentSyntax : RawSyntaxNodeProtocol {
67
67
public enum Component : RawSyntaxNodeProtocol {
68
68
case property( RawKeyPathPropertyComponentSyntax )
69
+ case method( RawKeyPathMethodComponentSyntax )
69
70
case `subscript`( RawKeyPathSubscriptComponentSyntax )
70
71
case optional( RawKeyPathOptionalComponentSyntax )
71
72
72
73
public static func isKindOf( _ raw: RawSyntax ) -> Bool {
73
- RawKeyPathPropertyComponentSyntax . isKindOf ( raw) || RawKeyPathSubscriptComponentSyntax . isKindOf ( raw) || RawKeyPathOptionalComponentSyntax . isKindOf ( raw)
74
+ RawKeyPathPropertyComponentSyntax . isKindOf ( raw) || RawKeyPathMethodComponentSyntax . isKindOf ( raw ) || RawKeyPathSubscriptComponentSyntax . isKindOf ( raw) || RawKeyPathOptionalComponentSyntax . isKindOf ( raw)
74
75
}
75
76
76
77
public var raw : RawSyntax {
77
78
switch self {
78
79
case . property( let node) :
79
80
return node. raw
81
+ case . method( let node) :
82
+ return node. raw
80
83
case . subscript( let node) :
81
84
return node. raw
82
85
case . optional( let node) :
@@ -87,6 +90,8 @@ public struct RawKeyPathComponentSyntax: RawSyntaxNodeProtocol {
87
90
public init ? ( _ node: __shared some RawSyntaxNodeProtocol ) {
88
91
if let node = node. as ( RawKeyPathPropertyComponentSyntax . self) {
89
92
self = . property( node)
93
+ } else if let node = node. as ( RawKeyPathMethodComponentSyntax . self) {
94
+ self = . method( node)
90
95
} else if let node = node. as ( RawKeyPathSubscriptComponentSyntax . self) {
91
96
self = . subscript( node)
92
97
} else if let node = node. as ( RawKeyPathOptionalComponentSyntax . self) {
@@ -247,6 +252,100 @@ public struct RawKeyPathExprSyntax: RawExprSyntaxNodeProtocol {
247
252
}
248
253
}
249
254
255
+ @_spi ( RawSyntax)
256
+ public struct RawKeyPathMethodComponentSyntax : RawSyntaxNodeProtocol {
257
+ @_spi ( RawSyntax)
258
+ public var layoutView : RawSyntaxLayoutView {
259
+ return raw. layoutView!
260
+ }
261
+
262
+ public static func isKindOf( _ raw: RawSyntax ) -> Bool {
263
+ return raw. kind == . keyPathMethodComponent
264
+ }
265
+
266
+ public var raw : RawSyntax
267
+
268
+ init ( raw: RawSyntax ) {
269
+ precondition ( Self . isKindOf ( raw) )
270
+ self . raw = raw
271
+ }
272
+
273
+ private init ( unchecked raw: RawSyntax ) {
274
+ self . raw = raw
275
+ }
276
+
277
+ public init ? ( _ other: some RawSyntaxNodeProtocol ) {
278
+ guard Self . isKindOf ( other. raw) else {
279
+ return nil
280
+ }
281
+ self . init ( unchecked: other. raw)
282
+ }
283
+
284
+ public init (
285
+ _ unexpectedBeforeDeclName: RawUnexpectedNodesSyntax ? = nil ,
286
+ declName: RawDeclReferenceExprSyntax ,
287
+ _ unexpectedBetweenDeclNameAndLeftParen: RawUnexpectedNodesSyntax ? = nil ,
288
+ leftParen: RawTokenSyntax ,
289
+ _ unexpectedBetweenLeftParenAndArguments: RawUnexpectedNodesSyntax ? = nil ,
290
+ arguments: RawLabeledExprListSyntax ,
291
+ _ unexpectedBetweenArgumentsAndRightParen: RawUnexpectedNodesSyntax ? = nil ,
292
+ rightParen: RawTokenSyntax ,
293
+ _ unexpectedAfterRightParen: RawUnexpectedNodesSyntax ? = nil ,
294
+ arena: __shared SyntaxArena
295
+ ) {
296
+ let raw = RawSyntax . makeLayout (
297
+ kind: . keyPathMethodComponent, uninitializedCount: 9 , arena: arena) { layout in
298
+ layout. initialize ( repeating: nil )
299
+ layout [ 0 ] = unexpectedBeforeDeclName? . raw
300
+ layout [ 1 ] = declName. raw
301
+ layout [ 2 ] = unexpectedBetweenDeclNameAndLeftParen? . raw
302
+ layout [ 3 ] = leftParen. raw
303
+ layout [ 4 ] = unexpectedBetweenLeftParenAndArguments? . raw
304
+ layout [ 5 ] = arguments. raw
305
+ layout [ 6 ] = unexpectedBetweenArgumentsAndRightParen? . raw
306
+ layout [ 7 ] = rightParen. raw
307
+ layout [ 8 ] = unexpectedAfterRightParen? . raw
308
+ }
309
+ self . init ( unchecked: raw)
310
+ }
311
+
312
+ public var unexpectedBeforeDeclName : RawUnexpectedNodesSyntax ? {
313
+ layoutView. children [ 0 ] . map ( RawUnexpectedNodesSyntax . init ( raw: ) )
314
+ }
315
+
316
+ public var declName : RawDeclReferenceExprSyntax {
317
+ layoutView. children [ 1 ] . map ( RawDeclReferenceExprSyntax . init ( raw: ) ) !
318
+ }
319
+
320
+ public var unexpectedBetweenDeclNameAndLeftParen : RawUnexpectedNodesSyntax ? {
321
+ layoutView. children [ 2 ] . map ( RawUnexpectedNodesSyntax . init ( raw: ) )
322
+ }
323
+
324
+ public var leftParen : RawTokenSyntax {
325
+ layoutView. children [ 3 ] . map ( RawTokenSyntax . init ( raw: ) ) !
326
+ }
327
+
328
+ public var unexpectedBetweenLeftParenAndArguments : RawUnexpectedNodesSyntax ? {
329
+ layoutView. children [ 4 ] . map ( RawUnexpectedNodesSyntax . init ( raw: ) )
330
+ }
331
+
332
+ public var arguments : RawLabeledExprListSyntax {
333
+ layoutView. children [ 5 ] . map ( RawLabeledExprListSyntax . init ( raw: ) ) !
334
+ }
335
+
336
+ public var unexpectedBetweenArgumentsAndRightParen : RawUnexpectedNodesSyntax ? {
337
+ layoutView. children [ 6 ] . map ( RawUnexpectedNodesSyntax . init ( raw: ) )
338
+ }
339
+
340
+ public var rightParen : RawTokenSyntax {
341
+ layoutView. children [ 7 ] . map ( RawTokenSyntax . init ( raw: ) ) !
342
+ }
343
+
344
+ public var unexpectedAfterRightParen : RawUnexpectedNodesSyntax ? {
345
+ layoutView. children [ 8 ] . map ( RawUnexpectedNodesSyntax . init ( raw: ) )
346
+ }
347
+ }
348
+
250
349
@_spi ( RawSyntax)
251
350
public struct RawKeyPathOptionalComponentSyntax : RawSyntaxNodeProtocol {
252
351
@_spi ( RawSyntax)
0 commit comments