I think the following is a sensible concept:
protocol SpecialValue {}
extension Array: SpecialValue where Element: SpecialValue { }
(that is, an array of SpecialValues is also a SpecialValue), but the above crashes both SourceKit and the Swift 2 compiler.
Even this less specific version crashes both SourceKit and the compiler:
extension Array where Element: SpecialValue { }
Are either of these supposed to be something that can be wriiten in Swift? The similar:
extension CollectionType where Generator.Element: SpecialValue { }
works, but this:
extension CollectionType: SpecialValue where Generator.Element: SpecialValue { }
produces an error "Extension of protocol 'CollectionType' cannot have an inheritance clause".