diff --git a/README.md b/README.md index 0eb89a9..9110bfb 100644 --- a/README.md +++ b/README.md @@ -267,6 +267,7 @@ Here's a sample context object: { "cases": [ { + "index": 0, "name": "caseName", "parameters": { "name": "parameterName", diff --git a/Sources/EnumeratorMacroImpl/Types/ECase.swift b/Sources/EnumeratorMacroImpl/Types/ECase.swift index 11981c3..89efd11 100644 --- a/Sources/EnumeratorMacroImpl/Types/ECase.swift +++ b/Sources/EnumeratorMacroImpl/Types/ECase.swift @@ -3,10 +3,12 @@ import SwiftSyntax import Mustache struct ECase { + let index: Int let name: EString let parameters: EParameters - init(from element: EnumCaseElementSyntax) throws { + init(index: Int, from element: EnumCaseElementSyntax) throws { + self.index = index self.name = .init(element.name.trimmedDescription) let parameters = element.parameterClause?.parameters ?? [] self.parameters = .init( diff --git a/Sources/EnumeratorMacroImpl/Types/ECases.swift b/Sources/EnumeratorMacroImpl/Types/ECases.swift index 63534d2..e20a8bd 100644 --- a/Sources/EnumeratorMacroImpl/Types/ECases.swift +++ b/Sources/EnumeratorMacroImpl/Types/ECases.swift @@ -6,7 +6,9 @@ struct ECases { init(elements: [EnumCaseElementSyntax]) throws { self.underlying = .init( - underlying: try elements.map(ECase.init(from:)) + underlying: try elements.enumerated().map { idx, element in + try ECase(index: idx, from: element) + } ) } }