On unicode-rethink: ODDLY
diff --git a/test/Prototypes/Unicode.swift b/test/Prototypes/Unicode.swift
index 5f55b8e..53104a2 100644
--- a/test/Prototypes/Unicode.swift
+++ b/test/Prototypes/Unicode.swift
@@ -251,6 +251,8 @@
CodeUnits.SubSequence.SubSequence == CodeUnits.SubSequence,
CodeUnits.SubSequence.Iterator.Element == CodeUnits.Iterator.Element {
+ typealias FromEncoding = Encoding
+
init(_ codeUnits: CodeUnits, _: Encoding.Type = Encoding.self) {
self.codeUnits = codeUnits
}
@@ -362,33 +364,28 @@
}
}
-/// Given `CodeUnits` representing text that has been encoded with
-/// `FromEncoding`, provides a collection of `ToEncoding.CodeUnit`s
-/// representing the same text.
-struct TranscodedView<
- CodeUnits : RandomAccessCollection,
- FromEncoding : UnicodeEncoding,
- ToEncoding : UnicodeEncoding
->
-where FromEncoding.EncodedScalar.Iterator.Element == CodeUnits.Iterator.Element,
- CodeUnits.SubSequence : RandomAccessCollection,
- CodeUnits.SubSequence.Index == CodeUnits.Index,
- CodeUnits.SubSequence.SubSequence == CodeUnits.SubSequence,
- CodeUnits.SubSequence.Iterator.Element == CodeUnits.Iterator.Element
-{
- // We could just be a generic typealias as this type, but it turns
- // out to be impossible, or nearly so, to write the init() below.
- // Instead, we wrap an instance of Base.
- typealias Base = FlattenBidirectionalCollection<
- LazyMapBidirectionalCollection<
- UnicodeStorage<CodeUnits, FromEncoding>.EncodedScalars,
- ToEncoding.EncodedScalar
+extension UnicodeStorage {
+ /// Given `CodeUnits` representing text that has been encoded with
+ /// `FromEncoding`, provides a collection of `ToEncoding.CodeUnit`s
+ /// representing the same text.
+ public struct TranscodedView <
+ ToEncoding : UnicodeEncoding
+ >
+ {
+ // We could just be a generic typealias as this type, but it turns
+ // out to be impossible, or nearly so, to write the init() below.
+ // Instead, we wrap an instance of Base.
+ typealias Base = FlattenBidirectionalCollection<
+ LazyMapBidirectionalCollection<
+ UnicodeStorage<CodeUnits, FromEncoding>.EncodedScalars,
+ ToEncoding.EncodedScalar
+ >
>
- >
- let base: Base
+ let base: Base
+ }
}
-extension TranscodedView : BidirectionalCollection {
+extension UnicodeStorage.TranscodedView : BidirectionalCollection {
typealias SubSequence = BidirectionalSlice<TranscodedView>
public var startIndex : Base.Index {