diff --git a/Sources/SWONMacros/Decoding.swift b/Sources/SWONMacros/Decoding.swift index 42ac486..ff25a5a 100644 --- a/Sources/SWONMacros/Decoding.swift +++ b/Sources/SWONMacros/Decoding.swift @@ -131,6 +131,10 @@ struct SWONDecodeMacro: MemberMacro { } else { // Parse struct fields for prop in properties { + // Skip computed properties + guard prop.bindings.allSatisfy({ !$0.isComputed }) else { + continue + } guard let field = prop.bindings.first?.pattern.as(IdentifierPatternSyntax.self)?.identifier.text else { continue } diff --git a/Sources/SWONMacros/Encoding.swift b/Sources/SWONMacros/Encoding.swift index 71c8f66..31ca466d 100644 --- a/Sources/SWONMacros/Encoding.swift +++ b/Sources/SWONMacros/Encoding.swift @@ -163,6 +163,10 @@ struct SWONEncodeMacro: MemberMacro { } else { // Struct fields for prop in properties { + // Skip computed properties + guard prop.bindings.allSatisfy({ !$0.isComputed }) else { + continue + } guard let field = prop.bindings.first?.pattern.as(IdentifierPatternSyntax.self)?.identifier.text else { continue } diff --git a/Sources/SWONMacros/Helpers.swift b/Sources/SWONMacros/Helpers.swift index 0e00cfc..5f5f3f4 100644 --- a/Sources/SWONMacros/Helpers.swift +++ b/Sources/SWONMacros/Helpers.swift @@ -79,6 +79,12 @@ extension EnumDeclSyntax { } } +extension PatternBindingSyntax { + var isComputed: Bool { + accessorBlock != nil + } +} + struct SWONMessage: DiagnosticMessage { let severity: DiagnosticSeverity = .note let message: String