On Sun, Jan 3, 2016, at 03:41 AM, Loïc Lecrenier via swift-evolution wrote:
> Hi Drew,
> 
> Thanks for the review, just a quick remark:
> 
> “Real” type aliases are already forbidden inside protocols, so this proposal 
> wouldn’t change that.
> (According to the grammar, a protocol body can only contain: property, 
> method, initializer, subscript, or associated type member declarations)
> 
> In your example, secondstype and usecstype were associated types with initial 
> values. To convince yourself, try to create this function
> func bar(_: Foo) { }
> and you should see the "can only be used as a generic constraint because it 
> has Self or associated type requirements” error.
> 
> I initially wanted to allow type aliases inside protocols, and I was told 
> type aliases weren’t requirements, so they shouldn’t be defined inside 
> protocols, which makes sense to me.
> 
> We might want to reconsider this, but I think it is outside the scope of this 
> proposal.

I agree that protocols shouldn't have typealiases, but I would be in favor of 
protocol extensions having them:

extension SequenceType {
    typealias Element = Generator.Element
}

But it is definitely outside the scope of this proposal.

-Kevin Ballard
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to