// RUN: %target-swift-frontend %s -emit-ir struct MySlice : MyCollectionType {} struct MyMutableSlice : MyMutableCollectionType {} protocol MySequenceType {} protocol MyIndexableType {} protocol MyCollectionType : MySequenceType, MyIndexableType { typealias SubSequence = MySlice func makeSubSequence() -> SubSequence } extension MyCollectionType { func makeSubSequence() -> MySlice { typealias S = Self return MySlice() } } protocol MyMutableCollectionType : MyCollectionType { typealias SubSequence = MyMutableSlice } extension MyMutableCollectionType { func makeSubSequence() -> MyMutableSlice { typealias S = Self return MyMutableSlice() } }