I’m running into a type inference problem when attempting to pass a 
generic type which is generic to a generic type to a function which expects a 
generic type. I’ll explain:

I have a function:
func add<Observer: ProcedureObserver>(observer: Observer) where 
Observer.Procedure == Procedure

Which I’m sending a parameter of type:

struct BlockObserver<T: ProcedureProcotol>: ProcedureObserver

Which has been provided a type through this function:

func networkProcedureProgressViewObserver<T: URLRequestRoutable, U: 
Decodable>() -> BlockObserver<NetworkProcedure<T, U>> where U == U.DecodedType

However, calling add(observer: networkProcedureProgressViewObserver()) results 
in the error: Generic parameter ‘Observer’ could not be inferred. I’ve tried 
everything I can think of to help the inference but nothing works. Am I correct 
in thinking this is a limitation of the current generics system not being able 
to propagate the type information from NetworkProcedure<T, U> to 
BlockObserver<NetworkProcedure<T, U>> to the function?

swift-users mailing list

Reply via email to