Skip to content

Commit 3b6557b

Browse files
committed
ignore lazy var
1 parent 04d6158 commit 3b6557b

File tree

4 files changed

+15
-3
lines changed

4 files changed

+15
-3
lines changed

Sources/CodableWrapperMacros/ModelMemberPropertyContainer.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,11 @@ private extension ModelMemberPropertyContainer {
180180
}
181181
let patterns = variable.bindings.map(\.pattern)
182182
let names = patterns.compactMap { $0.as(IdentifierPatternSyntax.self)?.identifier.text }
183-
return try names.map { name -> ModelMemberProperty in
183+
184+
return try names.compactMap { name -> ModelMemberProperty? in
185+
guard !variable.isLazyVar else {
186+
return nil
187+
}
184188
guard let type = variable.inferType else {
185189
throw ASTError("please declare property type: \(name)")
186190
}

Sources/CodableWrapperMacros/VariableDeclSyntaxExtension.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,11 @@ extension VariableDeclSyntax {
6565
}
6666
return false
6767
}
68+
69+
var isLazyVar: Bool {
70+
if modifiers.contains(where: { $0.name.trimmedDescription == "lazy" }) {
71+
return true
72+
}
73+
return false
74+
}
6875
}

Tests/CodableWrapperTests/CodableWrapperTests.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,6 @@ final class CodableWrapperTests: XCTestCase {
127127

128128
let model = try JSONDecoder().decode(ClassSubmodel.self, from: jsonStr.data(using: .utf8)!)
129129
XCTAssertEqual(model.val, "a")
130-
// Intentional Failure
131-
XCTAssertEqual(model.subVal, "b")
130+
XCTAssertNotEqual(model.subVal, "b")
132131
}
133132
}

Tests/CodableWrapperTests/DeclareTests.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ class ClassModel0: Codable {
1717
var val1111 = true
1818
var val2: Int?
1919

20+
lazy var lazyVal: Double = val111 * 2
21+
2022
// var val3 = [String: String].init()
2123
// var val4 = [123] + [4]
2224
}

0 commit comments

Comments
 (0)