@@ -46,6 +46,11 @@ import Data.Text.Internal.Unsafe.Shift (shiftR)
46
46
import GHC.Exts
47
47
import GHC.Word (Word8 (.. ))
48
48
49
+ #if !MIN_VERSION_base(4,16,0)
50
+ -- harmless to import, except for warnings that it is unused.
51
+ import Data.Text.Internal.PrimCompat (word8ToWord #)
52
+ #endif
53
+
49
54
default (Int )
50
55
51
56
between :: Word8 -- ^ byte to check
@@ -94,18 +99,18 @@ ord4 c =
94
99
chr2 :: Word8 -> Word8 -> Char
95
100
chr2 (W8 # x1# ) (W8 # x2# ) = C # (chr# (z1# +# z2# ))
96
101
where
97
- ! y1# = word2Int# x1#
98
- ! y2# = word2Int# x2#
102
+ ! y1# = word2Int# (word8ToWord # x1# )
103
+ ! y2# = word2Int# (word8ToWord # x2# )
99
104
! z1# = uncheckedIShiftL# (y1# -# 0xC0 # ) 6 #
100
105
! z2# = y2# -# 0x80 #
101
106
{-# INLINE chr2 #-}
102
107
103
108
chr3 :: Word8 -> Word8 -> Word8 -> Char
104
109
chr3 (W8 # x1# ) (W8 # x2# ) (W8 # x3# ) = C # (chr# (z1# +# z2# +# z3# ))
105
110
where
106
- ! y1# = word2Int# x1#
107
- ! y2# = word2Int# x2#
108
- ! y3# = word2Int# x3#
111
+ ! y1# = word2Int# (word8ToWord # x1# )
112
+ ! y2# = word2Int# (word8ToWord # x2# )
113
+ ! y3# = word2Int# (word8ToWord # x3# )
109
114
! z1# = uncheckedIShiftL# (y1# -# 0xE0 # ) 12 #
110
115
! z2# = uncheckedIShiftL# (y2# -# 0x80 # ) 6 #
111
116
! z3# = y3# -# 0x80 #
@@ -115,10 +120,10 @@ chr4 :: Word8 -> Word8 -> Word8 -> Word8 -> Char
115
120
chr4 (W8 # x1# ) (W8 # x2# ) (W8 # x3# ) (W8 # x4# ) =
116
121
C # (chr# (z1# +# z2# +# z3# +# z4# ))
117
122
where
118
- ! y1# = word2Int# x1#
119
- ! y2# = word2Int# x2#
120
- ! y3# = word2Int# x3#
121
- ! y4# = word2Int# x4#
123
+ ! y1# = word2Int# (word8ToWord # x1# )
124
+ ! y2# = word2Int# (word8ToWord # x2# )
125
+ ! y3# = word2Int# (word8ToWord # x3# )
126
+ ! y4# = word2Int# (word8ToWord # x4# )
122
127
! z1# = uncheckedIShiftL# (y1# -# 0xF0 # ) 18 #
123
128
! z2# = uncheckedIShiftL# (y2# -# 0x80 # ) 12 #
124
129
! z3# = uncheckedIShiftL# (y3# -# 0x80 # ) 6 #
0 commit comments