@@ -188,39 +188,40 @@ open class BasicFormat: SyntaxRewriter {
188
188
189
189
/// Whether a leading newline on `token` should be added.
190
190
open func requiresIndent( _ node: some SyntaxProtocol ) -> Bool {
191
- guard let keyPath = node. keyPathInParent else {
191
+
192
+ guard let property = node. propertyInParent else {
192
193
return false
193
194
}
194
- switch keyPath {
195
- case \ AccessorBlockSyntax . accessors:
195
+ switch property {
196
+ case AccessorBlockSyntax . layout [ . accessors] :
196
197
return true
197
- case \ ArrayExprSyntax . elements:
198
+ case ArrayExprSyntax . layout [ . elements] :
198
199
return true
199
- case \ ClosureExprSyntax . statements:
200
+ case ClosureExprSyntax . layout [ . statements] :
200
201
return true
201
- case \ ClosureParameterClauseSyntax . parameters:
202
+ case ClosureParameterClauseSyntax . layout [ . parameters] :
202
203
return true
203
- case \ CodeBlockSyntax . statements:
204
+ case CodeBlockSyntax . layout [ . statements] :
204
205
return true
205
- case \ DictionaryElementSyntax . value:
206
+ case DictionaryElementSyntax . layout [ . value] :
206
207
return true
207
- case \ DictionaryExprSyntax . content:
208
+ case DictionaryExprSyntax . layout [ . content] :
208
209
return true
209
- case \ EnumCaseParameterClauseSyntax . parameters:
210
+ case EnumCaseParameterClauseSyntax . layout [ . parameters] :
210
211
return true
211
- case \ FunctionCallExprSyntax . arguments:
212
+ case FunctionCallExprSyntax . layout [ . arguments] :
212
213
return true
213
- case \ FunctionTypeSyntax . parameters:
214
+ case FunctionTypeSyntax . layout [ . parameters] :
214
215
return true
215
- case \ MemberDeclBlockSyntax . members:
216
+ case MemberBlockSyntax . layout [ . members] :
216
217
return true
217
- case \ ParameterClauseSyntax . parameters:
218
+ case FunctionParameterClauseSyntax . layout [ . parameters] :
218
219
return true
219
- case \ SwitchCaseSyntax . statements:
220
+ case SwitchCaseSyntax . layout [ . statements] :
220
221
return true
221
- case \ TupleExprSyntax . elements:
222
+ case TupleExprSyntax . layout [ . elements] :
222
223
return true
223
- case \ TupleTypeSyntax . elements:
224
+ case TupleTypeSyntax . layout [ . elements] :
224
225
return true
225
226
default :
226
227
return false
@@ -234,17 +235,17 @@ open class BasicFormat: SyntaxRewriter {
234
235
/// as a closure or if it gets interpreted as the statements body. We should
235
236
/// thus be conservative and not add a newline after the `{` in `BasicFormat`.
236
237
private func isLeftBraceOfClosureInStmtConditionExpr( _ token: TokenSyntax ? ) -> Bool {
237
- guard let token, token. keyPathInParent == \ ClosureExprSyntax . leftBrace else {
238
+ guard let token, token. propertyInParent == ClosureExprSyntax . layout [ . leftBrace] else {
238
239
return false
239
240
}
240
241
return token. ancestorOrSelf ( mapping: {
241
- switch $0. keyPathInParent {
242
- case \ CatchItemSyntax . pattern,
243
- \ ConditionElementSyntax . condition,
244
- \ ExpressionPatternSyntax . expression,
245
- \ ForStmtSyntax . sequence,
246
- \ ForStmtSyntax . whereClause,
247
- \ SwitchExprSyntax . subject:
242
+ switch $0. propertyInParent {
243
+ case CatchItemSyntax . layout [ . pattern] ,
244
+ ConditionElementSyntax . layout [ . condition] ,
245
+ ExpressionPatternSyntax . layout [ . expression] ,
246
+ ForStmtSyntax . layout [ . sequence] ,
247
+ ForStmtSyntax . layout [ . whereClause] ,
248
+ SwitchExprSyntax . layout [ . subject] :
248
249
return $0
249
250
default :
250
251
return nil
@@ -275,11 +276,8 @@ open class BasicFormat: SyntaxRewriter {
275
276
if let ancestorsParent = ancestor. parent, childrenSeparatedByNewline ( ancestorsParent) {
276
277
return true
277
278
}
278
- switch ancestor. keyPathInParent {
279
- case \IfConfigClauseSyntax . elements:
279
+ if ancestor. propertyInParent == IfConfigClauseSyntax . layout [ . elements] {
280
280
return true
281
- default :
282
- break
283
281
}
284
282
}
285
283
}
@@ -363,9 +361,9 @@ open class BasicFormat: SyntaxRewriter {
363
361
( nil , _) :
364
362
return false
365
363
case ( _, . colon) :
366
- switch second? . keyPathInParent {
367
- case \ TernaryExprSyntax . colon,
368
- \ UnresolvedTernaryExprSyntax . colon:
364
+ switch second? . propertyInParent {
365
+ case TernaryExprSyntax . layout [ . colon] ,
366
+ UnresolvedTernaryExprSyntax . layout [ . colon] :
369
367
break
370
368
default :
371
369
return false
@@ -377,12 +375,12 @@ open class BasicFormat: SyntaxRewriter {
377
375
// `<` and `>` need to be separated by a space because otherwise they become an operator
378
376
return false
379
377
case ( _, . leftParen) :
380
- switch second? . keyPathInParent {
381
- case \ ClosureParameterClauseSyntax . leftParen,
382
- \ FunctionTypeSyntax . leftParen,
383
- \ TupleExprSyntax . leftParen,
384
- \ TuplePatternSyntax . leftParen,
385
- \ TupleTypeSyntax . leftParen:
378
+ switch second? . propertyInParent {
379
+ case ClosureParameterClauseSyntax . layout [ . leftParen] ,
380
+ FunctionTypeSyntax . layout [ . leftParen] ,
381
+ TupleExprSyntax . layout [ . leftParen] ,
382
+ TuplePatternSyntax . layout [ . leftParen] ,
383
+ TupleTypeSyntax . layout [ . leftParen] :
386
384
break
387
385
default :
388
386
return false
@@ -392,13 +390,13 @@ open class BasicFormat: SyntaxRewriter {
392
390
break
393
391
}
394
392
395
- switch first? . keyPathInParent {
396
- case \ ExpressionSegmentSyntax . backslash,
397
- \ ExpressionSegmentSyntax . rightParen,
398
- \ DeclNameArgumentSyntax . colon,
399
- \ SimpleStringLiteralExprSyntax . openingQuote,
400
- \ StringLiteralExprSyntax . openingQuote,
401
- \ RegexLiteralExprSyntax . openingSlash:
393
+ switch first? . propertyInParent {
394
+ case ExpressionSegmentSyntax . layout [ . backslash] ,
395
+ ExpressionSegmentSyntax . layout [ . rightParen] ,
396
+ DeclNameArgumentSyntax . layout [ . colon] ,
397
+ SimpleStringLiteralExprSyntax . layout [ . openingQuote] ,
398
+ StringLiteralExprSyntax . layout [ . openingQuote] ,
399
+ RegexLiteralExprSyntax . layout [ . openingSlash] :
402
400
return false
403
401
default :
404
402
break
0 commit comments