Browse Source

Fix an issue with nil return values.

Mhd Hejazi 5 years ago
parent
commit
6348b37074
2 changed files with 6 additions and 2 deletions
  1. 5 1
      Sources/Dynamic/Dynamic.swift
  2. 1 1
      Tests/DynamicTests/DynamicTests.swift

+ 5 - 1
Sources/Dynamic/Dynamic.swift

@@ -102,10 +102,14 @@ public class Dynamic: CustomDebugStringConvertible, Loggable {
         log("Get:", "\(object?.debugDescription ?? "").\(name)")
 
         let resolved = resolve()
-        if resolved == nil || resolved is Error {
+        if resolved is Error {
             return self
         }
 
+        if resolved == nil {
+            return Self.nil
+        }
+
         log(.end)
 
         return Dynamic(resolved, memberName: name)

+ 1 - 1
Tests/DynamicTests/DynamicTests.swift

@@ -189,7 +189,7 @@ final class DynamicTests: XCTestCase {
         let errorChained = error.thisMethodCallHasNoEffect(123).randomProperty
         XCTAssertTrue(errorChained === error, "Calling methods and properties form error should return the same object")
 
-        let null = ObjC(nil)
+        let null = ObjC.nil
         XCTAssertNil(null.asObject, "Wrapped nil should return nil")
 
         let nullChained = null.thisMethodCallHasNoEffect(123).randomProperty