diff --git a/Sources/MockoloFramework/Utils/TypeParser.swift b/Sources/MockoloFramework/Utils/TypeParser.swift index bfbb7f84..9baa7888 100644 --- a/Sources/MockoloFramework/Utils/TypeParser.swift +++ b/Sources/MockoloFramework/Utils/TypeParser.swift @@ -181,6 +181,12 @@ public final class SwiftType { if isUnknown { return false } + + var typeName = typeName + if typeName.hasPrefix(.any.withSpace) { + typeName.removeFirst(String.any.withSpace.count) + } + for scalar in typeName.unicodeScalars { if scalar == " " { return false diff --git a/Tests/TestExistentialAny/FixtureExistentialAny.swift b/Tests/TestExistentialAny/FixtureExistentialAny.swift index dbd3d028..032a613c 100644 --- a/Tests/TestExistentialAny/FixtureExistentialAny.swift +++ b/Tests/TestExistentialAny/FixtureExistentialAny.swift @@ -5,11 +5,15 @@ protocol ExistentialAny { var bar: any R { get } var baz: any P & Q { get } var qux: (any P) -> any P { get } + + func quux() -> P + func corge() -> any R + func grault() -> any P & Q + func garply() -> (any P) -> any P } """ -let existentialAnyMock = -""" +let existentialAnyMock = """ class ExistentialAnyMock: ExistentialAny { init() { } init(foo: P, bar: any R, baz: any P & Q, qux: @escaping (any P) -> any P) { @@ -20,29 +24,73 @@ class ExistentialAnyMock: ExistentialAny { } - private var _foo: P! + + private var _foo: P! var foo: P { get { return _foo } set { _foo = newValue } } - private var _bar: (any R)! + + private var _bar: (any R)! var bar: any R { get { return _bar } set { _bar = newValue } } - private var _baz: (any P & Q)! + + private var _baz: (any P & Q)! var baz: any P & Q { get { return _baz } set { _baz = newValue } } - private var _qux: ((any P) -> any P)! + + private var _qux: ((any P) -> any P)! var qux: (any P) -> any P { get { return _qux } set { _qux = newValue } } + + private(set) var quuxCallCount = 0 + var quuxHandler: (() -> P)? + func quux() -> P { + quuxCallCount += 1 + if let quuxHandler = quuxHandler { + return quuxHandler() + } + fatalError("quuxHandler returns can't have a default value thus its handler must be set") + } + + private(set) var corgeCallCount = 0 + var corgeHandler: (() -> any R)? + func corge() -> any R { + corgeCallCount += 1 + if let corgeHandler = corgeHandler { + return corgeHandler() + } + fatalError("corgeHandler returns can't have a default value thus its handler must be set") + } + + private(set) var graultCallCount = 0 + var graultHandler: (() -> (any P & Q))? + func grault() -> any P & Q { + graultCallCount += 1 + if let graultHandler = graultHandler { + return graultHandler() + } + fatalError("graultHandler returns can't have a default value thus its handler must be set") + } + + private(set) var garplyCallCount = 0 + var garplyHandler: (() -> ((any P) -> any P))? + func garply() -> (any P) -> any P { + garplyCallCount += 1 + if let garplyHandler = garplyHandler { + return garplyHandler() + } + fatalError("garplyHandler returns can't have a default value thus its handler must be set") + } } """