@@ -1852,6 +1852,70 @@ impl<'module, 'a> Generator<'module, 'a> {
18521852 Ok ( docvec ! [ "codepointBits(" , value, ")" ] )
18531853 }
18541854
1855+ // UTF16 strings
1856+ [ Opt :: Utf16 { .. } ]
1857+ | [ Opt :: Utf16 { .. } , Opt :: Big { .. } ]
1858+ | [ Opt :: Big { .. } , Opt :: Utf16 { .. } ] => {
1859+ self . tracker . string_utf16_bit_array_segment_used = true ;
1860+ let is_big = "true" . to_doc ( ) ;
1861+ Ok ( docvec ! [ "stringToUtf16(" , value, ", " , is_big, ")" ] )
1862+ }
1863+
1864+ [ Opt :: Utf16 { .. } , Opt :: Little { .. } ]
1865+ | [ Opt :: Little { .. } , Opt :: Utf16 { .. } ] => {
1866+ self . tracker . string_utf16_bit_array_segment_used = true ;
1867+ let is_big = "false" . to_doc ( ) ;
1868+ Ok ( docvec ! [ "stringToUtf16(" , value, ", " , is_big, ")" ] )
1869+ }
1870+
1871+ // UTF16 codepoints
1872+ [ Opt :: Utf16Codepoint { .. } ]
1873+ | [ Opt :: Utf16Codepoint { .. } , Opt :: Big { .. } ]
1874+ | [ Opt :: Big { .. } , Opt :: Utf16Codepoint { .. } ] => {
1875+ self . tracker . codepoint_utf16_bit_array_segment_used = true ;
1876+ let is_big = "true" . to_doc ( ) ;
1877+ Ok ( docvec ! [ "codepointToUtf16(" , value, ", " , is_big, ")" ] )
1878+ }
1879+
1880+ [ Opt :: Utf16Codepoint { .. } , Opt :: Little { .. } ]
1881+ | [ Opt :: Little { .. } , Opt :: Utf16Codepoint { .. } ] => {
1882+ self . tracker . codepoint_utf16_bit_array_segment_used = true ;
1883+ let is_big = "false" . to_doc ( ) ;
1884+ Ok ( docvec ! [ "codepointToUtf16(" , value, ", " , is_big, ")" ] )
1885+ }
1886+
1887+ // UTF32 strings
1888+ [ Opt :: Utf32 { .. } ]
1889+ | [ Opt :: Utf32 { .. } , Opt :: Big { .. } ]
1890+ | [ Opt :: Big { .. } , Opt :: Utf32 { .. } ] => {
1891+ self . tracker . string_utf32_bit_array_segment_used = true ;
1892+ let is_big = "true" . to_doc ( ) ;
1893+ Ok ( docvec ! [ "stringToUtf32(" , value, ", " , is_big, ")" ] )
1894+ }
1895+
1896+ [ Opt :: Utf32 { .. } , Opt :: Little { .. } ]
1897+ | [ Opt :: Little { .. } , Opt :: Utf32 { .. } ] => {
1898+ self . tracker . string_utf32_bit_array_segment_used = true ;
1899+ let is_big = "false" . to_doc ( ) ;
1900+ Ok ( docvec ! [ "stringToUtf32(" , value, ", " , is_big, ")" ] )
1901+ }
1902+
1903+ // UTF32 codepoints
1904+ [ Opt :: Utf32Codepoint { .. } ]
1905+ | [ Opt :: Utf32Codepoint { .. } , Opt :: Big { .. } ]
1906+ | [ Opt :: Big { .. } , Opt :: Utf32Codepoint { .. } ] => {
1907+ self . tracker . codepoint_utf32_bit_array_segment_used = true ;
1908+ let is_big = "true" . to_doc ( ) ;
1909+ Ok ( docvec ! [ "codepointToUtf32(" , value, ", " , is_big, ")" ] )
1910+ }
1911+
1912+ [ Opt :: Utf32Codepoint { .. } , Opt :: Little { .. } ]
1913+ | [ Opt :: Little { .. } , Opt :: Utf32Codepoint { .. } ] => {
1914+ self . tracker . codepoint_utf32_bit_array_segment_used = true ;
1915+ let is_big = "false" . to_doc ( ) ;
1916+ Ok ( docvec ! [ "codepointToUtf32(" , value, ", " , is_big, ")" ] )
1917+ }
1918+
18551919 // Bit arrays
18561920 [ Opt :: Bits { .. } ] => Ok ( value) ,
18571921
0 commit comments