Swift Xcode 7 beta 5 类型不能将自身作为要求

Swift Xcode 7 beta 5 type cannot refer to itself as a requirement

此代码曾经是合法的:

protocol Flier {
    typealias Other : Flier
    func flockTogetherWith(f:Other)
}
struct Bird : Flier {
    func flockTogetherWith(f:Insect) {}
}
struct Insect : Flier {
    func flockTogetherWith(f:Insect) {}
}

现在(在 Xcode 7 beta 5 中)不是。这里发生了什么?这是一个错误吗?我只是想确保 Flier 的采纳者使用某个 Flier 采纳者的参数声明 flockTogetherWith。我一直都能做到。为什么突然做错了?

我不知道为什么这是错误的。但是解决它相当容易(尽管很烦人):声明另一个协议供 Flier 采用并将其用作约束类型:

protocol Superflier {}
protocol Flier : Superflier {
    typealias Other : Superflier
    func flockTogetherWith(f:Other)
}

这让代码真的很痛苦,但至少它通过了编译器。

编辑:SevenTenEleven 在开发论坛上的回复:

Having this kind of constraint isn't inherently unreasonable, but in some cases it would lead to compiler crashes. We decided to lock down on this for now. Your workaround of using a second protocol is a reasonable one.

所以如果令人遗憾的话,这个改变可能被认为是故意的,我给出的解决方法是目前的方法。