Skip to content

Commit ba56542

Browse files
committed
Factor out utility method for format-leadingTrivia params
1 parent 8800e93 commit ba56542

File tree

3 files changed

+25
-57
lines changed

3 files changed

+25
-57
lines changed

Sources/SwiftSyntaxBuilderGeneration/SyntaxUtilities.swift

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,22 @@ func createTypeInheritanceClause(conformances: [String]) -> TypeInheritanceClaus
6161
}
6262
}
6363
}
64+
65+
func createFormatLeadingTriviaParameters(withDefaultTrivia: Bool = false) -> ParameterClause {
66+
ParameterClause(
67+
parameterList: [
68+
FunctionParameter(
69+
firstName: .identifier("format"),
70+
colon: .colon,
71+
type: "Format",
72+
trailingComma: .comma
73+
),
74+
FunctionParameter(
75+
firstName: .identifier("leadingTrivia"),
76+
colon: .colon,
77+
type: OptionalType(wrappedType: "Trivia"),
78+
defaultArgument: withDefaultTrivia ? InitializerClause(value: "nil") : nil
79+
),
80+
]
81+
)
82+
}

Sources/SwiftSyntaxBuilderGeneration/Templates/BuildableBaseProtocolsFile.swift

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ let buildableBaseProtocolsFile = SourceFile {
4646
].map { .docLineComment($0) + .newline }.reduce([], +),
4747
identifier: .identifier("build\(type.baseName)List"),
4848
signature: FunctionSignature(
49-
input: formatLeadingTriviaParameters(),
49+
input: createFormatLeadingTriviaParameters(),
5050
output: ArrayType(elementType: type.syntax)
5151
),
5252
body: nil
@@ -66,7 +66,7 @@ let buildableBaseProtocolsFile = SourceFile {
6666
].map { .docLineComment($0) + .newline }.reduce([], +),
6767
identifier: .identifier("build\(type.baseName)"),
6868
signature: FunctionSignature(
69-
input: formatLeadingTriviaParameters(),
69+
input: createFormatLeadingTriviaParameters(),
7070
output: type.syntax
7171
),
7272
body: nil
@@ -98,7 +98,7 @@ let buildableBaseProtocolsFile = SourceFile {
9898
].map { .docLineComment($0) + .newline }.reduce([], +),
9999
identifier: .identifier("build\(type.baseName)List"),
100100
signature: FunctionSignature(
101-
input: formatLeadingTriviaParameters(withDefaultTrivia: true),
101+
input: createFormatLeadingTriviaParameters(withDefaultTrivia: true),
102102
output: ArrayType(elementType: type.syntax)
103103
)
104104
) {
@@ -122,7 +122,7 @@ let buildableBaseProtocolsFile = SourceFile {
122122
].map { .docLineComment($0) + .newline }.reduce([], +),
123123
identifier: .identifier("buildSyntax"),
124124
signature: FunctionSignature(
125-
input: formatLeadingTriviaParameters(withDefaultTrivia: true),
125+
input: createFormatLeadingTriviaParameters(withDefaultTrivia: true),
126126
output: "Syntax"
127127
)
128128
) {
@@ -137,24 +137,3 @@ let buildableBaseProtocolsFile = SourceFile {
137137
}
138138
}
139139
}
140-
141-
// Generate a (format: Format, leadingTrivia: Trivia?) parameter clause
142-
// to avoid duplication among the protocols above.
143-
private func formatLeadingTriviaParameters(withDefaultTrivia: Bool = false) -> ParameterClause {
144-
ParameterClause(
145-
parameterList: [
146-
FunctionParameter(
147-
firstName: .identifier("format"),
148-
colon: .colon,
149-
type: "Format",
150-
trailingComma: .comma
151-
),
152-
FunctionParameter(
153-
firstName: .identifier("leadingTrivia"),
154-
colon: .colon,
155-
type: OptionalType(wrappedType: "Trivia"),
156-
defaultArgument: withDefaultTrivia ? InitializerClause(value: "nil") : nil
157-
),
158-
]
159-
)
160-
}

Sources/SwiftSyntaxBuilderGeneration/Templates/BuildableCollectionNodesFile.swift

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -113,22 +113,7 @@ let buildableCollectionNodesFile = SourceFile {
113113
modifiers: [TokenSyntax.public],
114114
identifier: .identifier("build\(type.baseName)"),
115115
signature: FunctionSignature(
116-
input: ParameterClause(
117-
parameterList: [
118-
FunctionParameter(
119-
firstName: .identifier("format"),
120-
colon: .colon,
121-
type: "Format",
122-
trailingComma: .comma
123-
),
124-
FunctionParameter(
125-
firstName: .identifier("leadingTrivia"),
126-
colon: .colon,
127-
type: OptionalType(wrappedType: "Trivia"),
128-
defaultArgument: InitializerClause(value: "nil")
129-
),
130-
]
131-
),
116+
input: createFormatLeadingTriviaParameters(withDefaultTrivia: true),
132117
output: type.syntax
133118
)
134119
) {
@@ -197,22 +182,7 @@ let buildableCollectionNodesFile = SourceFile {
197182
modifiers: [TokenSyntax.public],
198183
identifier: .identifier("buildSyntax"),
199184
signature: FunctionSignature(
200-
input: ParameterClause(
201-
parameterList: [
202-
FunctionParameter(
203-
firstName: .identifier("format"),
204-
colon: .colon,
205-
type: "Format",
206-
trailingComma: .comma
207-
),
208-
FunctionParameter(
209-
firstName: .identifier("leadingTrivia"),
210-
colon: .colon,
211-
type: OptionalType(wrappedType: "Trivia"),
212-
defaultArgument: InitializerClause(value: "nil")
213-
),
214-
]
215-
),
185+
input: createFormatLeadingTriviaParameters(withDefaultTrivia: true),
216186
output: "Syntax"
217187
)
218188
) {

0 commit comments

Comments
 (0)