File tree Expand file tree Collapse file tree
Sources/StructBuilderMacro Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ //
2+ // GetFirstEnumCaseName.swift
3+ //
4+ //
5+ // Created by Alexander Schmutz on 09.02.24.
6+ //
7+
8+ import SwiftSyntax
9+
10+ func getFirstEnumCaseName( from enumDecl: EnumDeclSyntax ) throws -> TokenSyntax {
11+ guard let firstCaseName = enumDecl. memberBlock. members. first? . decl. as ( EnumCaseDeclSyntax . self) ? . elements. first? . name else {
12+ throw " Missing enum case "
13+ }
14+ return firstCaseName
15+ }
Original file line number Diff line number Diff line change @@ -9,20 +9,13 @@ import Foundation
99import SwiftSyntax
1010
1111func makeEnumBuilder( enumDecl: EnumDeclSyntax ) throws -> StructDeclSyntax {
12- guard let firstCaseName = enumDecl. memberBlock. members. first? . decl. as ( EnumCaseDeclSyntax . self) ? . elements. first? . name else {
13- throw " Missing enum case "
14- }
15-
16- let structIdentifier = getStructBuilderName ( from: enumDecl. name)
17- let valueVariable = TokenSyntax ( stringLiteral: " value " )
18- let returningType = TypeSyntax ( stringLiteral: enumDecl. name. text)
1912 let enumMember = EnumMember (
20- identifier: valueVariable ,
21- type: returningType ,
22- value: firstCaseName
13+ identifier: TokenSyntax ( stringLiteral : " value " ) ,
14+ type: TypeSyntax ( stringLiteral : enumDecl . name . text ) ,
15+ value: try getFirstEnumCaseName ( from : enumDecl )
2316 )
24-
25- return StructDeclSyntax ( name: structIdentifier ) {
17+
18+ return StructDeclSyntax ( name: getStructBuilderName ( from : enumDecl . name ) ) {
2619 MemberBlockItemListSyntax {
2720 MemberBlockItemSyntax ( decl: makeVariableDeclWithValue ( enumMember: enumMember) )
2821 MemberBlockItemSyntax (
Original file line number Diff line number Diff line change @@ -10,9 +10,8 @@ import SwiftSyntax
1010
1111func makeStructBuilder( structDecl: StructDeclSyntax ) -> StructDeclSyntax {
1212 let structMembers = extractMembersFrom ( structDecl. memberBlock. members)
13- let structIdentifier = getStructBuilderName ( from: structDecl. name)
1413
15- return StructDeclSyntax ( name: structIdentifier ) {
14+ return StructDeclSyntax ( name: getStructBuilderName ( from : structDecl . name ) ) {
1615 MemberBlockItemListSyntax {
1716 for structMember in structMembers {
1817 MemberBlockItemSyntax ( decl: makeVariableDecl ( structMember: structMember) )
You can’t perform that action at this time.
0 commit comments