Open
Description
Describe the bug
Concrete implementation of a generic protocol does not inherit the type aliases from the generic protocol
Steps To Reproduce
protocol MyThing<First, Second> {
associatedtype First
associatedtype Second
typealias Convenience = (Result<First, Error>) -> Void
func doSomething(completion: @escaping Convenience)
}
protocol MyMoreConcreteThing: MyThing<String, Int> {
}
class MyConcreteThing: MyMoreConcreteThing {
var completion: Convenience?
func doSomething(completion: @escaping Convenience) { // ERROR HERE: Reference to invalid type alias
}
}
This won't build due to the error: "Reference to invalid type alias 'Convenience' of type 'MyConcreteThing'". However the concrete implementation of the generic protocol should still have access to the generic protocol's type alias.