@@ -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,18 @@ 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
244
+ CatchItemSyntax . layout [ . pattern] ,
245
+ ConditionElementSyntax . layout [ . condition] ,
246
+ ExpressionPatternSyntax . layout [ . expression] ,
247
+ ForStmtSyntax . layout [ . sequence] ,
248
+ ForStmtSyntax . layout [ . whereClause] ,
249
+ SwitchExprSyntax . layout [ . subject] :
248
250
return $0
249
251
default :
250
252
return nil
@@ -275,11 +277,8 @@ open class BasicFormat: SyntaxRewriter {
275
277
if let ancestorsParent = ancestor. parent, childrenSeparatedByNewline ( ancestorsParent) {
276
278
return true
277
279
}
278
- switch ancestor. keyPathInParent {
279
- case \IfConfigClauseSyntax . elements:
280
+ if ancestor. propertyInParent == IfConfigClauseSyntax . layout [ . elements] {
280
281
return true
281
- default :
282
- break
283
282
}
284
283
}
285
284
}
@@ -363,9 +362,9 @@ open class BasicFormat: SyntaxRewriter {
363
362
( nil , _) :
364
363
return false
365
364
case ( _, . colon) :
366
- switch second? . keyPathInParent {
367
- case \ TernaryExprSyntax . colon,
368
- \ UnresolvedTernaryExprSyntax . colon:
365
+ switch second? . propertyInParent {
366
+ case TernaryExprSyntax . layout [ . colon] ,
367
+ UnresolvedTernaryExprSyntax . layout [ . colon] :
369
368
break
370
369
default :
371
370
return false
@@ -377,12 +376,12 @@ open class BasicFormat: SyntaxRewriter {
377
376
// `<` and `>` need to be separated by a space because otherwise they become an operator
378
377
return false
379
378
case ( _, . leftParen) :
380
- switch second? . keyPathInParent {
381
- case \ ClosureParameterClauseSyntax . leftParen,
382
- \ FunctionTypeSyntax . leftParen,
383
- \ TupleExprSyntax . leftParen,
384
- \ TuplePatternSyntax . leftParen,
385
- \ TupleTypeSyntax . leftParen:
379
+ switch second? . propertyInParent {
380
+ case ClosureParameterClauseSyntax . layout [ . leftParen] ,
381
+ FunctionTypeSyntax . layout [ . leftParen] ,
382
+ TupleExprSyntax . layout [ . leftParen] ,
383
+ TuplePatternSyntax . layout [ . leftParen] ,
384
+ TupleTypeSyntax . layout [ . leftParen] :
386
385
break
387
386
default :
388
387
return false
@@ -392,13 +391,13 @@ open class BasicFormat: SyntaxRewriter {
392
391
break
393
392
}
394
393
395
- switch first? . keyPathInParent {
396
- case \ ExpressionSegmentSyntax . backslash,
397
- \ ExpressionSegmentSyntax . rightParen,
398
- \ DeclNameArgumentSyntax . colon,
399
- \ SimpleStringLiteralExprSyntax . openingQuote,
400
- \ StringLiteralExprSyntax . openingQuote,
401
- \ RegexLiteralExprSyntax . openingSlash:
394
+ switch first? . propertyInParent {
395
+ case ExpressionSegmentSyntax . layout [ . backslash] ,
396
+ ExpressionSegmentSyntax . layout [ . rightParen] ,
397
+ DeclNameArgumentSyntax . layout [ . colon] ,
398
+ SimpleStringLiteralExprSyntax . layout [ . openingQuote] ,
399
+ StringLiteralExprSyntax . layout [ . openingQuote] ,
400
+ RegexLiteralExprSyntax . layout [ . openingSlash] :
402
401
return false
403
402
default :
404
403
break
0 commit comments