Skip to content

Commit 0d06b13

Browse files
authored
Fix missing generic parameters in member type (#341)
1 parent 9c0c92f commit 0d06b13

2 files changed

Lines changed: 32 additions & 3 deletions

File tree

Sources/MockoloFramework/Utils/SwiftType.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -633,9 +633,16 @@ extension SwiftType {
633633

634634
case .memberType(let syntax):
635635
// T.U
636+
let name = syntax.name.trimmedDescription
637+
let generics = syntax.genericArgumentClause?.arguments.compactMap {
638+
$0.argument.as(TypeSyntax.self).flatMap {
639+
SwiftType(typeSyntax: $0)
640+
}
641+
}
636642
self.kind = .nominal(.init(
637643
namespace: SwiftType(typeSyntax: syntax.baseType),
638-
name: syntax.name.trimmedDescription
644+
name: name,
645+
genericParameterTypes: generics ?? []
639646
))
640647

641648
case .attributedType(let syntax):

Tests/TestFuncs/TestGenericFuncs/FixtureGenericFunc.swift

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,12 @@ import MockoloFramework
5656
func pull<U: ObservableType>(events: [SomeEvent], until: U?, closure: @escaping () -> ())
5757
func optionalPull<T>(events: [SomeEvent], value: T, once: Bool, closure: ((T?) -> ())?)
5858
func add<T: FixedWidthInteger>(n1: T, n2: T?)
59-
func add<T: Sequence> (a: T?, b: T?)
60-
func add<T: Collection> (a: T, b: T)
59+
func add<T: Sequence>(a: T?, b: T?)
60+
func add<T: Collection>(a: T, b: T)
6161
func useMetatype<T>(type: T.Type) -> T.Type
6262
func useAssociatedType<I: Identifiable>(value: I, id: I.ID) -> I.ID
63+
func foo<T: Body>() -> Result<T, any Error>
64+
func bar<T: Body>() -> Swift.Result<T, any Error>
6365
}
6466

6567
@Fixture enum expected {
@@ -206,6 +208,26 @@ import MockoloFramework
206208
}
207209
fatalError("useAssociatedTypeHandler returns can't have a default value thus its handler must be set")
208210
}
211+
212+
private(set) var fooCallCount = 0
213+
var fooHandler: (() -> Any)?
214+
func foo<T: Body>() -> Result<T, any Error> {
215+
fooCallCount += 1
216+
if let fooHandler = fooHandler {
217+
return fooHandler() as! Result<T, any Error>
218+
}
219+
fatalError("fooHandler returns can't have a default value thus its handler must be set")
220+
}
221+
222+
private(set) var barCallCount = 0
223+
var barHandler: (() -> Any)?
224+
func bar<T: Body>() -> Swift.Result<T, any Error> {
225+
barCallCount += 1
226+
if let barHandler = barHandler {
227+
return barHandler() as! Swift.Result<T, any Error>
228+
}
229+
fatalError("barHandler returns can't have a default value thus its handler must be set")
230+
}
209231
}
210232
}
211233
}

0 commit comments

Comments
 (0)