[swift-evolution] [Pitch] Allow sub-protocols to define typealiases for protocols' associatedtypes

Douglas Gregor dgregor at apple.com
Mon Jun 6 16:55:31 CDT 2016


> On Jun 6, 2016, at 1:59 PM, Ross O'Brien via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Given a protocol with an associated type:
> 
> protocol Foo
> {
>   associatedtype Bar
> }
> 
> it should be possible to define a protocol conforming to Foo, for which Bar can be typealiased:
> 
> protocol IntFoo : Foo
> {
>   typealias Bar = Int
> }
> 
> such that all conformers to IntFoo now have an associatedtype Bar being Int without having to define it themselves. At present IntFoo cannot declare a typealias (as this generates a warning that typealias has been deprecated), but can declare an 'associatedtype Bar = Int' which types conforming to IntFoo have to repeat to consider it properly declared. This re-declaration is redundant.

The “More Powerful Constraints for Associated Types” proposal provides a better way to accomplish this:

	https://github.com/apple/swift-evolution/pull/284

	- Doug




More information about the swift-evolution mailing list