File tree Expand file tree Collapse file tree 6 files changed +10
-9
lines changed Expand file tree Collapse file tree 6 files changed +10
-9
lines changed Original file line number Diff line number Diff line change @@ -37,7 +37,7 @@ extension _Unicode.UTF16 : UnicodeEncoding {
37
37
return UnicodeScalar ( _unchecked: value)
38
38
}
39
39
40
- public static func encode( _ source: UnicodeScalar ) -> EncodedScalar {
40
+ public static func encode( _ source: UnicodeScalar ) -> EncodedScalar ? {
41
41
let x = source. value
42
42
if _fastPath ( x < ( 1 << 16 ) ) {
43
43
return EncodedScalar ( _storage: x, _bitCount: 16 )
Original file line number Diff line number Diff line change @@ -34,7 +34,7 @@ extension _Unicode.UTF32 : UnicodeEncoding {
34
34
}
35
35
36
36
@inline ( __always)
37
- public static func encode( _ source: UnicodeScalar ) -> EncodedScalar {
37
+ public static func encode( _ source: UnicodeScalar ) -> EncodedScalar ? {
38
38
return EncodedScalar ( source. value)
39
39
}
40
40
Original file line number Diff line number Diff line change @@ -58,7 +58,7 @@ extension _Unicode.UTF8 : UnicodeEncoding {
58
58
59
59
@inline ( __always)
60
60
@_inlineable
61
- public static func encode( _ source: UnicodeScalar ) -> EncodedScalar {
61
+ public static func encode( _ source: UnicodeScalar ) -> EncodedScalar ? {
62
62
var c = source. value
63
63
if _fastPath ( c < ( 1 &< < 7 ) ) {
64
64
return EncodedScalar ( _storage: c, _bitCount: 8 )
Original file line number Diff line number Diff line change @@ -265,7 +265,7 @@ extension _Unicode.UTF8 : UnicodeCodec {
265
265
_ input: UnicodeScalar ,
266
266
into processCodeUnit: ( CodeUnit ) -> Void
267
267
) {
268
- var s = encode ( input) . _storage
268
+ var s = encode ( input) ! . _storage
269
269
processCodeUnit ( UInt8 ( extendingOrTruncating: s) )
270
270
s &>>= 8
271
271
if _fastPath ( s == 0 ) { return }
@@ -414,7 +414,7 @@ extension _Unicode.UTF16 : UnicodeCodec {
414
414
_ input: UnicodeScalar ,
415
415
into processCodeUnit: ( CodeUnit ) -> Void
416
416
) {
417
- var s = encode ( input) . _storage
417
+ var s = encode ( input) ! . _storage
418
418
processCodeUnit ( UInt16 ( extendingOrTruncating: s) )
419
419
s &>>= 16
420
420
if _fastPath ( s == 0 ) { return }
Original file line number Diff line number Diff line change @@ -24,8 +24,9 @@ public protocol _UnicodeEncoding {
24
24
/// Converts from encoded to encoding-independent representation
25
25
static func decode( _ content: EncodedScalar ) -> UnicodeScalar
26
26
27
- /// Converts from encoding-independent to encoded representation
28
- static func encode( _ content: UnicodeScalar ) -> EncodedScalar
27
+ /// Converts from encoding-independent to encoded representation, returning
28
+ /// `nil` if the scalar can't be represented in this encoding.
29
+ static func encode( _ content: UnicodeScalar ) -> EncodedScalar ?
29
30
30
31
associatedtype ForwardParser : UnicodeParser
31
32
associatedtype ReverseParser : UnicodeParser
Original file line number Diff line number Diff line change @@ -221,12 +221,12 @@ func checkDecodeUTF<Codec : UnicodeCodec & UnicodeEncoding>(
221
221
decoded. append ( scalar)
222
222
expectEqual (
223
223
UnicodeScalar ( scalar) ,
224
- Codec . decode ( Codec . encode ( UnicodeScalar ( scalar) !) ) )
224
+ Codec . decode ( Codec . encode ( UnicodeScalar ( scalar) !) ! ) )
225
225
}
226
226
227
227
func output1( _ scalar: UnicodeScalar ) {
228
228
decoded. append ( scalar. value)
229
- expectEqual ( scalar, Codec . decode ( Codec . encode ( scalar) ) )
229
+ expectEqual ( scalar, Codec . decode ( Codec . encode ( scalar) ! ) )
230
230
}
231
231
232
232
var result = assertionSuccess ( )
You can’t perform that action at this time.
0 commit comments