Skip to content

Commit b63eaaf

Browse files
committed
Fix CodeGenerationFormat to correctly indent certain children that span multiple lines
1 parent 9b51a7b commit b63eaaf

File tree

3 files changed

+25
-20
lines changed

3 files changed

+25
-20
lines changed

CodeGeneration/Sources/Utils/CodeGenerationFormat.swift

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ public class CodeGenerationFormat: BasicFormat {
112112
return false
113113
}
114114
let startsOnNewline =
115-
node.leadingTrivia.contains { $0.isNewline }
116-
|| node.previousToken(viewMode: .sourceAccurate)?.trailingTrivia.contains { $0.isNewline } ?? false
115+
node.leadingTrivia.contains(where: \.isNewline)
116+
|| node.previousToken(viewMode: .sourceAccurate)?.trailingTrivia.contains(where: \.isNewline) ?? false
117117
if !startsOnNewline {
118118
return false
119119
}
@@ -143,16 +143,21 @@ public class CodeGenerationFormat: BasicFormat {
143143
children: SyntaxChildren,
144144
elementType: SyntaxType.Type
145145
) -> [SyntaxType] {
146-
var formattedChildren = children.map { child in
147-
var child = child.cast(SyntaxType.self)
148-
child.leadingTrivia = Trivia(pieces: child.leadingTrivia.drop(while: \.isWhitespace))
149-
return self.rewrite(child).cast(SyntaxType.self)
150-
}
151146
increaseIndentationLevel()
147+
var formattedChildren = children.map {
148+
return self.rewrite($0.cast(SyntaxType.self)).cast(SyntaxType.self)
149+
}
152150
formattedChildren = formattedChildren.map { child in
153151
var child = child
154152
child.trailingTrivia = Trivia(pieces: child.trailingTrivia.drop(while: \.isSpaceOrTab))
155-
child.leadingTrivia = indentedNewline + child.leadingTrivia
153+
154+
let startsOnNewline =
155+
child.leadingTrivia.contains(where: \.isNewline)
156+
|| child.previousToken(viewMode: .sourceAccurate)?.trailingTrivia.contains(where: \.isNewline) ?? false
157+
158+
if !startsOnNewline {
159+
child.leadingTrivia = indentedNewline + child.leadingTrivia
160+
}
156161
return child
157162
}
158163
decreaseIndentationLevel()

Sources/SwiftSyntaxBuilder/generated/BuildableNodes.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ extension AccessorDeclSyntax {
5151
effectSpecifiers: effectSpecifiers,
5252
unexpectedBetweenEffectSpecifiersAndBody,
5353
body: bodyBuilder().map {
54-
CodeBlockSyntax(statements: $0)
55-
},
54+
CodeBlockSyntax(statements: $0)
55+
},
5656
unexpectedAfterBody,
5757
trailingTrivia: trailingTrivia
5858
)
@@ -344,8 +344,8 @@ extension DeinitializerDeclSyntax {
344344
effectSpecifiers: effectSpecifiers,
345345
unexpectedBetweenEffectSpecifiersAndBody,
346346
body: bodyBuilder().map {
347-
CodeBlockSyntax(statements: $0)
348-
},
347+
CodeBlockSyntax(statements: $0)
348+
},
349349
unexpectedAfterBody,
350350
trailingTrivia: trailingTrivia
351351
)
@@ -701,8 +701,8 @@ extension FunctionDeclSyntax {
701701
genericWhereClause: genericWhereClause,
702702
unexpectedBetweenGenericWhereClauseAndBody,
703703
body: bodyBuilder().map {
704-
CodeBlockSyntax(statements: $0)
705-
},
704+
CodeBlockSyntax(statements: $0)
705+
},
706706
unexpectedAfterBody,
707707
trailingTrivia: trailingTrivia
708708
)
@@ -947,8 +947,8 @@ extension InitializerDeclSyntax {
947947
genericWhereClause: genericWhereClause,
948948
unexpectedBetweenGenericWhereClauseAndBody,
949949
body: bodyBuilder().map {
950-
CodeBlockSyntax(statements: $0)
951-
},
950+
CodeBlockSyntax(statements: $0)
951+
},
952952
unexpectedAfterBody,
953953
trailingTrivia: trailingTrivia
954954
)

Sources/SwiftSyntaxBuilder/generated/RenamedChildrenBuilderCompatibility.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ extension AccessorDeclSyntax {
5353
effectSpecifiers: effectSpecifiers,
5454
unexpectedBetweenEffectSpecifiersAndBody,
5555
body: bodyBuilder().map {
56-
CodeBlockSyntax(statements: $0)
57-
},
56+
CodeBlockSyntax(statements: $0)
57+
},
5858
unexpectedAfterBody,
5959
trailingTrivia: trailingTrivia
6060
)
@@ -415,8 +415,8 @@ extension FunctionDeclSyntax {
415415
genericWhereClause: genericWhereClause,
416416
unexpectedBetweenGenericWhereClauseAndBody,
417417
body: bodyBuilder().map {
418-
CodeBlockSyntax(statements: $0)
419-
},
418+
CodeBlockSyntax(statements: $0)
419+
},
420420
unexpectedAfterBody,
421421
trailingTrivia: trailingTrivia
422422
)

0 commit comments

Comments
 (0)