Skip to content

Commit

Permalink
fix for existential any
Browse files Browse the repository at this point in the history
  • Loading branch information
sidepelican committed Nov 21, 2024
1 parent dad1d94 commit 5c7b342
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 6 deletions.
6 changes: 6 additions & 0 deletions Sources/MockoloFramework/Utils/TypeParser.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
60 changes: 54 additions & 6 deletions Tests/TestExistentialAny/FixtureExistentialAny.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,15 @@ protocol ExistentialAny {
var bar: any R<Int> { get }
var baz: any P & Q { get }
var qux: (any P) -> any P { get }
func quux() -> P
func corge() -> any R<Int>
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<Int>, baz: any P & Q, qux: @escaping (any P) -> any P) {
Expand All @@ -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<Int>)!
private var _bar: (any R<Int>)!
var bar: any R<Int> {
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<Int>)?
func corge() -> any R<Int> {
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")
}
}
"""

Expand Down

0 comments on commit 5c7b342

Please sign in to comment.