Skip to content

Commit b725a0b

Browse files
author
Alexander Schmutz
committed
Reuse building builder for classes and structs
1 parent b85d81c commit b725a0b

2 files changed

Lines changed: 5 additions & 15 deletions

File tree

Sources/StructBuilderMacro/StructAndClass/MakeClassBuilder.swift

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,5 @@ func makeClassBuilder(classDecl: ClassDeclSyntax) throws -> StructDeclSyntax {
1313
}
1414
let structMembers = extractInitializerMembers(from: initialiserDecl)
1515

16-
return StructDeclSyntax(name: getStructBuilderName(from: classDecl.name)) {
17-
MemberBlockItemListSyntax {
18-
for structMember in structMembers {
19-
MemberBlockItemSyntax(decl: makeVariableDecl(structMember: structMember))
20-
}
21-
MemberBlockItemSyntax(
22-
leadingTrivia: .newlines(2),
23-
decl: makeFunctionDecl(name: classDecl.name, structMembers: structMembers)
24-
)
25-
}
26-
}
16+
return makeStructBuilderFrom(structName: classDecl.name, structMembers: structMembers)
2717
}

Sources/StructBuilderMacro/StructAndClass/MakeStructBuilder.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import SwiftSyntax
99

1010
func makeStructBuilder(structDecl: StructDeclSyntax) -> StructDeclSyntax {
1111
let structMembers = getStructMembers(structDecl: structDecl)
12-
return makeStructBuilderFrom(structDecl: structDecl, structMembers: structMembers)
12+
return makeStructBuilderFrom(structName: structDecl.name, structMembers: structMembers)
1313
}
1414

1515
private func getStructMembers(structDecl: StructDeclSyntax) -> [StructMember] {
@@ -20,15 +20,15 @@ private func getStructMembers(structDecl: StructDeclSyntax) -> [StructMember] {
2020
}
2121
}
2222

23-
private func makeStructBuilderFrom(structDecl: StructDeclSyntax, structMembers: [StructMember]) -> StructDeclSyntax {
24-
StructDeclSyntax(name: getStructBuilderName(from: structDecl.name)) {
23+
func makeStructBuilderFrom(structName: TokenSyntax, structMembers: [StructMember]) -> StructDeclSyntax {
24+
StructDeclSyntax(name: getStructBuilderName(from: structName)) {
2525
MemberBlockItemListSyntax {
2626
for structMember in structMembers {
2727
MemberBlockItemSyntax(decl: makeVariableDecl(structMember: structMember))
2828
}
2929
MemberBlockItemSyntax(
3030
leadingTrivia: .newlines(2),
31-
decl: makeFunctionDecl(name: structDecl.name, structMembers: structMembers)
31+
decl: makeFunctionDecl(name: structName, structMembers: structMembers)
3232
)
3333
}
3434
}

0 commit comments

Comments
 (0)