How is AnyPublisher being implemented here?

I’ve been reading through OpenCombine to get a better understanding of the types involved with Combine. In particular I was curious how AnyPublisher is implemented. While the implementation makes a lot if sense I’m a bit lost understanding what’s happening at OpenCombine/AnyPublisher.swift at 621f9709980350c3c63db0fa9069c2f391c8701b · OpenCombine/OpenCombine · GitHub. It appears to be calling init on the concrete Publisher but I guess it’s somehow actually calling AnyPublisher.init? What am I missing?

return init(self) would be calling it on the concrete Publisher (except that this syntax isn’t legal for init specifically). return .init(self), with a dot, is calling it on the type implied by the context – which in this case is the return type, AnyPublisher<Output, Failure>.

This is the same syntax as when you refer to an enum case as .case instead of MyEnum.case.

1 Like

Wow that’s very interesting, definitely a big piece that was missing from my understanding of the type system, many thanks!