| ;; NOTE: Assertions have been generated by update_lit_checks.py --output=fuzz-exec and should not be edited. | |
| ;; RUN: wasm-opt %s -all --fuzz-exec -q -o /dev/null 2>&1 | filecheck %s | |
| (module | |
| (type $array16 (array (mut i16))) | |
| (import "fuzzing-support" "log-i32" (func $log (param i32))) | |
| (memory 1 1) | |
| ;; CHECK: [fuzz-exec] export new_wtf16_array | |
| ;; CHECK-NEXT: [fuzz-exec] note result: new_wtf16_array => string("ello") | |
| (func $new_wtf16_array (export "new_wtf16_array") (result stringref) | |
| (string.new_wtf16_array | |
| (array.new_fixed $array16 5 | |
| (i32.const 104) ;; h | |
| (i32.const 101) ;; e | |
| (i32.const 108) ;; l | |
| (i32.const 108) ;; l | |
| (i32.const 111) ;; o | |
| ) | |
| (i32.const 1) ;; start from index 1, to chop off the 'h' | |
| (i32.const 5) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export const | |
| ;; CHECK-NEXT: [fuzz-exec] note result: const => string("world") | |
| (func $const (export "const") (result stringref) | |
| (string.const "world") | |
| ) | |
| ;; CHECK: [fuzz-exec] export eq.1 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: eq.1 => 0 | |
| (func $eq.1 (export "eq.1") (result i32) | |
| (string.eq | |
| (string.const "hello") | |
| (string.const "world") | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export eq.2 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: eq.2 => 1 | |
| (func $eq.2 (export "eq.2") (result i32) | |
| (string.eq | |
| (string.const "hello") | |
| (string.const "hello") | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export eq.3 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: eq.3 => 0 | |
| (func $eq.3 (export "eq.3") (result i32) | |
| (string.eq | |
| (string.const "hello") | |
| (ref.null string) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export eq.4 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: eq.4 => 0 | |
| (func $eq.4 (export "eq.4") (result i32) | |
| (string.eq | |
| (ref.null string) | |
| (string.const "world") | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export eq.5 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: eq.5 => 1 | |
| (func $eq.5 (export "eq.5") (result i32) | |
| (string.eq | |
| (ref.null string) | |
| (ref.null string) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export compare.1 | |
| ;; CHECK-NEXT: [trap null ref] | |
| (func $compare.1 (export "compare.1") (result i32) | |
| (string.compare | |
| (string.const "hello") | |
| (ref.null string) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export compare.2 | |
| ;; CHECK-NEXT: [trap null ref] | |
| (func $compare.2 (export "compare.2") (result i32) | |
| (string.compare | |
| (ref.null string) | |
| (string.const "world") | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export compare.3 | |
| ;; CHECK-NEXT: [trap null ref] | |
| (func $compare.3 (export "compare.3") (result i32) | |
| (string.compare | |
| (ref.null string) | |
| (ref.null string) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export compare.4 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.4 => 0 | |
| (func $compare.4 (export "compare.4") (result i32) | |
| (string.compare | |
| (string.const "hello") | |
| (string.const "hello") | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export compare.5 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.5 => -1 | |
| (func $compare.5 (export "compare.5") (result i32) | |
| (string.compare | |
| (string.const "hello") | |
| (string.const "hezlo") | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export compare.6 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.6 => 1 | |
| (func $compare.6 (export "compare.6") (result i32) | |
| (string.compare | |
| (string.const "hezlo") | |
| (string.const "hello") | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export compare.7 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.7 => -1 | |
| (func $compare.7 (export "compare.7") (result i32) | |
| (string.compare | |
| (string.const "he") | |
| (string.const "hello") | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export compare.8 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.8 => 1 | |
| (func $compare.8 (export "compare.8") (result i32) | |
| (string.compare | |
| (string.const "hello") | |
| (string.const "he") | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export compare.9 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.9 => 1 | |
| (func $compare.9 (export "compare.9") (result i32) | |
| (string.compare | |
| (string.const "hf") | |
| (string.const "hello") | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export compare.10 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.10 => -1 | |
| (func $compare.10 (export "compare.10") (result i32) | |
| (string.compare | |
| (string.const "hello") | |
| (string.const "hf") | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export get_codeunit | |
| ;; CHECK-NEXT: [fuzz-exec] note result: get_codeunit => 99 | |
| (func $get_codeunit (export "get_codeunit") (result i32) | |
| ;; Reads 'c' which is code 99. | |
| (stringview_wtf16.get_codeunit | |
| (string.const "abcdefg") | |
| (i32.const 2) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export encode | |
| ;; CHECK-NEXT: [LoggingExternalInterface logging 3] | |
| ;; CHECK-NEXT: [LoggingExternalInterface logging 0] | |
| ;; CHECK-NEXT: [LoggingExternalInterface logging 97] | |
| ;; CHECK-NEXT: [LoggingExternalInterface logging 98] | |
| ;; CHECK-NEXT: [LoggingExternalInterface logging 99] | |
| ;; CHECK-NEXT: [LoggingExternalInterface logging 0] | |
| (func $encode (export "encode") | |
| (local $array16 (ref $array16)) | |
| (local.set $array16 | |
| (array.new_default $array16 | |
| (i32.const 10) | |
| ) | |
| ) | |
| ;; Log out that we wrote 3 things. | |
| (call $log | |
| (string.encode_wtf16_array | |
| (string.const "abc") | |
| (local.get $array16) | |
| (i32.const 4) | |
| ) | |
| ) | |
| ;; We wrote 3 things at offset 4. Log out the values at 3,4,5,6,7 (the first | |
| ;; and last should be 0, and "abc" in between). | |
| (call $log | |
| (array.get $array16 | |
| (local.get $array16) | |
| (i32.const 3) | |
| ) | |
| ) | |
| (call $log | |
| (array.get $array16 | |
| (local.get $array16) | |
| (i32.const 4) | |
| ) | |
| ) | |
| (call $log | |
| (array.get $array16 | |
| (local.get $array16) | |
| (i32.const 5) | |
| ) | |
| ) | |
| (call $log | |
| (array.get $array16 | |
| (local.get $array16) | |
| (i32.const 6) | |
| ) | |
| ) | |
| (call $log | |
| (array.get $array16 | |
| (local.get $array16) | |
| (i32.const 7) | |
| ) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export encode-unsigned | |
| ;; CHECK-NEXT: [trap oob] | |
| (func $encode-unsigned (export "encode-unsigned") | |
| (drop | |
| (string.encode_wtf16_array | |
| (string.const "ab") | |
| (array.new_default $array16 | |
| (i32.const 28) | |
| ) | |
| ;; This is a huge unsigned offset, so we will trap on oob. | |
| (i32.const -2) | |
| ) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export encode-overflow | |
| ;; CHECK-NEXT: [trap oob] | |
| (func $encode-overflow (export "encode-overflow") | |
| ;; The string's size + the offset lead to an overflow here in the array. | |
| (drop | |
| (string.encode_wtf16_array | |
| (string.const "ab") | |
| (array.new_default $array16 | |
| (i32.const 10) | |
| ) | |
| (i32.const 9) | |
| ) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export slice | |
| ;; CHECK-NEXT: [fuzz-exec] note result: slice => string("def") | |
| (func $slice (export "slice") (result (ref string)) | |
| ;; Slicing [3:6] here should definitely output "def". | |
| (stringview_wtf16.slice | |
| (string.const "abcdefgh") | |
| (i32.const 3) | |
| (i32.const 6) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export slice-big | |
| ;; CHECK-NEXT: [fuzz-exec] note result: slice-big => string("defgh") | |
| (func $slice-big (export "slice-big") (result (ref string)) | |
| ;; Slicing [3:huge unsigned value] leads to slicing til the end: "defgh". | |
| (stringview_wtf16.slice | |
| (string.const "abcdefgh") | |
| (i32.const 3) | |
| (i32.const -1) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export slice-ordering | |
| ;; CHECK-NEXT: [fuzz-exec] note result: slice-ordering => string("h") | |
| (func $slice-ordering (export "slice-ordering") (result (ref string)) | |
| (local $0 i32) | |
| (stringview_wtf16.slice | |
| (string.const "hello") | |
| ;; If we were to defer emitting this get in the binary writer, it would | |
| ;; end up with the wrong value. | |
| (local.get $0) | |
| (local.tee $0 | |
| (i32.const 1) | |
| ) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export new_empty | |
| ;; CHECK-NEXT: [fuzz-exec] note result: new_empty => string("") | |
| (func $new_empty (export "new_empty") (result stringref) | |
| ;; Make an empty string from an empty array. | |
| (string.new_wtf16_array | |
| (array.new_default $array16 | |
| (i32.const 0) | |
| ) | |
| (i32.const 0) | |
| (i32.const 0) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export new_empty_oob | |
| ;; CHECK-NEXT: [trap array oob] | |
| (func $new_empty_oob (export "new_empty_oob") (result stringref) | |
| ;; Try to make a string from an empty array that we slice at [1:0], which is | |
| ;; out of bounds due to the starting index. | |
| (string.new_wtf16_array | |
| (array.new_default $array16 | |
| (i32.const 0) | |
| ) | |
| (i32.const 1) | |
| (i32.const 0) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export new_empty_oob_2 | |
| ;; CHECK-NEXT: [trap array oob] | |
| (func $new_empty_oob_2 (export "new_empty_oob_2") (result stringref) | |
| ;; Try to make a string from an empty array that we slice at [:1], which is | |
| ;; out of bounds due to the ending index. | |
| (string.new_wtf16_array | |
| (array.new_default $array16 | |
| (i32.const 0) | |
| ) | |
| (i32.const 0) | |
| (i32.const 1) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export new_oob | |
| ;; CHECK-NEXT: [trap array oob] | |
| (func $new_oob (export "new_oob") (result stringref) | |
| ;; Try to make a string from an array of size 1 that we slice at [1:0], | |
| ;; which is out of bounds due to the ending index (we must trap if the end | |
| ;; is less then the start). | |
| (string.new_wtf16_array | |
| (array.new_default $array16 | |
| (i32.const 1) | |
| ) | |
| (i32.const 1) | |
| (i32.const 0) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export new_2 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: new_2 => string("") | |
| (func $new_2 (export "new_2") (result stringref) | |
| (string.new_wtf16_array | |
| (array.new_default $array16 | |
| (i32.const 1) | |
| ) | |
| (i32.const 1) | |
| (i32.const 1) ;; this changed, which makes this an in-bounds operation | |
| ;; that emits an empty string | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export new_oob_3 | |
| ;; CHECK-NEXT: [trap array oob] | |
| (func $new_oob_3 (export "new_oob_3") (result stringref) | |
| (string.new_wtf16_array | |
| (array.new_default $array16 | |
| (i32.const 1) | |
| ) | |
| (i32.const 1) | |
| (i32.const 2) ;; this changed, and again we are out of bounds | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export new_4 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: new_4 => string("\u0000") | |
| (func $new_4 (export "new_4") (result stringref) | |
| (string.new_wtf16_array | |
| (array.new_default $array16 | |
| (i32.const 2) ;; this changed, and now we are in bounds, and emit a | |
| ;; string of length 1 (with unicode 0) | |
| ) | |
| (i32.const 1) | |
| (i32.const 2) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export slice-unicode | |
| ;; CHECK-NEXT: [fuzz-exec] note result: slice-unicode => string("d\u00a3f") | |
| (func $slice-unicode (export "slice-unicode") (result (ref string)) | |
| (stringview_wtf16.slice | |
| ;; abcd£fgh | |
| (string.const "abcd\C2\A3fgh") | |
| (i32.const 3) | |
| (i32.const 6) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export concat-surrogates | |
| ;; CHECK-NEXT: [fuzz-exec] note result: concat-surrogates => string("\ud800\udf48") | |
| (func $concat-surrogates (export "concat-surrogates") (result (ref string)) | |
| ;; Concatenating these surrogates creates '𐍈'. | |
| (string.concat (string.const "\ED\A0\80") (string.const "\ED\BD\88")) | |
| ) | |
| ;; CHECK: [fuzz-exec] export string.from_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] note result: string.from_code_point => string("A") | |
| (func $string.from_code_point (export "string.from_code_point") (result stringref) | |
| (string.from_code_point | |
| (i32.const 65) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export unsigned_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] note result: unsigned_code_point => string("\u0093") | |
| (func $unsigned_code_point (export "unsigned_code_point") (result stringref) | |
| (string.from_code_point | |
| ;; This must be interpreted as unsigned, that is, in the escaped output | |
| ;; the top byte is 0. | |
| (i32.const 147) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export weird_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] note result: weird_code_point => string("\u03e8") | |
| (func $weird_code_point (export "weird_code_point") (result stringref) | |
| (string.from_code_point | |
| (i32.const 0x3e8) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export isolated_high_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] note result: isolated_high_code_point => string("\ud800") | |
| (func $isolated_high_code_point (export "isolated_high_code_point") (result stringref) | |
| (string.from_code_point | |
| (i32.const 0xD800) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export isolated_low_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] note result: isolated_low_code_point => string("\udc00") | |
| (func $isolated_low_code_point (export "isolated_low_code_point") (result stringref) | |
| (string.from_code_point | |
| (i32.const 0xDC00) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export surrogate_pair_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] note result: surrogate_pair_code_point => string("\u286c") | |
| (func $surrogate_pair_code_point (export "surrogate_pair_code_point") (result stringref) | |
| (string.from_code_point | |
| (i32.const 0x286c) ;; 𐍈 | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export invalid_code_point | |
| ;; CHECK-NEXT: [trap invalid code point] | |
| (func $invalid_code_point (export "invalid_code_point") (result stringref) | |
| (string.from_code_point | |
| (i32.const -83) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export string.measure | |
| ;; CHECK-NEXT: [fuzz-exec] note result: string.measure => 5 | |
| (func $string.measure (export "string.measure") (result i32) | |
| (string.measure_wtf16 | |
| (string.const "five!") | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export string.to.any | |
| ;; CHECK-NEXT: [fuzz-exec] note result: string.to.any => string("six") | |
| (func $string.to.any (export "string.to.any") (result anyref) | |
| (any.convert_extern | |
| (string.const "six") | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export string.to.any.and.back | |
| ;; CHECK-NEXT: [fuzz-exec] note result: string.to.any.and.back => string("seven") | |
| (func $string.to.any.and.back (export "string.to.any.and.back") (result externref) | |
| (extern.convert_any | |
| (any.convert_extern | |
| (string.const "seven") | |
| ) | |
| ) | |
| ) | |
| ) | |
| ;; CHECK: [fuzz-exec] export new_wtf16_array | |
| ;; CHECK-NEXT: [fuzz-exec] note result: new_wtf16_array => string("ello") | |
| ;; CHECK: [fuzz-exec] export const | |
| ;; CHECK-NEXT: [fuzz-exec] note result: const => string("world") | |
| ;; CHECK: [fuzz-exec] export eq.1 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: eq.1 => 0 | |
| ;; CHECK: [fuzz-exec] export eq.2 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: eq.2 => 1 | |
| ;; CHECK: [fuzz-exec] export eq.3 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: eq.3 => 0 | |
| ;; CHECK: [fuzz-exec] export eq.4 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: eq.4 => 0 | |
| ;; CHECK: [fuzz-exec] export eq.5 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: eq.5 => 1 | |
| ;; CHECK: [fuzz-exec] export compare.1 | |
| ;; CHECK-NEXT: [trap null ref] | |
| ;; CHECK: [fuzz-exec] export compare.2 | |
| ;; CHECK-NEXT: [trap null ref] | |
| ;; CHECK: [fuzz-exec] export compare.3 | |
| ;; CHECK-NEXT: [trap null ref] | |
| ;; CHECK: [fuzz-exec] export compare.4 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.4 => 0 | |
| ;; CHECK: [fuzz-exec] export compare.5 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.5 => -1 | |
| ;; CHECK: [fuzz-exec] export compare.6 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.6 => 1 | |
| ;; CHECK: [fuzz-exec] export compare.7 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.7 => -1 | |
| ;; CHECK: [fuzz-exec] export compare.8 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.8 => 1 | |
| ;; CHECK: [fuzz-exec] export compare.9 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.9 => 1 | |
| ;; CHECK: [fuzz-exec] export compare.10 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: compare.10 => -1 | |
| ;; CHECK: [fuzz-exec] export get_codeunit | |
| ;; CHECK-NEXT: [fuzz-exec] note result: get_codeunit => 99 | |
| ;; CHECK: [fuzz-exec] export encode | |
| ;; CHECK-NEXT: [LoggingExternalInterface logging 3] | |
| ;; CHECK-NEXT: [LoggingExternalInterface logging 0] | |
| ;; CHECK-NEXT: [LoggingExternalInterface logging 97] | |
| ;; CHECK-NEXT: [LoggingExternalInterface logging 98] | |
| ;; CHECK-NEXT: [LoggingExternalInterface logging 99] | |
| ;; CHECK-NEXT: [LoggingExternalInterface logging 0] | |
| ;; CHECK: [fuzz-exec] export encode-unsigned | |
| ;; CHECK-NEXT: [trap oob] | |
| ;; CHECK: [fuzz-exec] export encode-overflow | |
| ;; CHECK-NEXT: [trap oob] | |
| ;; CHECK: [fuzz-exec] export slice | |
| ;; CHECK-NEXT: [fuzz-exec] note result: slice => string("def") | |
| ;; CHECK: [fuzz-exec] export slice-big | |
| ;; CHECK-NEXT: [fuzz-exec] note result: slice-big => string("defgh") | |
| ;; CHECK: [fuzz-exec] export slice-ordering | |
| ;; CHECK-NEXT: [fuzz-exec] note result: slice-ordering => string("h") | |
| ;; CHECK: [fuzz-exec] export new_empty | |
| ;; CHECK-NEXT: [fuzz-exec] note result: new_empty => string("") | |
| ;; CHECK: [fuzz-exec] export new_empty_oob | |
| ;; CHECK-NEXT: [trap array oob] | |
| ;; CHECK: [fuzz-exec] export new_empty_oob_2 | |
| ;; CHECK-NEXT: [trap array oob] | |
| ;; CHECK: [fuzz-exec] export new_oob | |
| ;; CHECK-NEXT: [trap array oob] | |
| ;; CHECK: [fuzz-exec] export new_2 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: new_2 => string("") | |
| ;; CHECK: [fuzz-exec] export new_oob_3 | |
| ;; CHECK-NEXT: [trap array oob] | |
| ;; CHECK: [fuzz-exec] export new_4 | |
| ;; CHECK-NEXT: [fuzz-exec] note result: new_4 => string("\u0000") | |
| ;; CHECK: [fuzz-exec] export slice-unicode | |
| ;; CHECK-NEXT: [fuzz-exec] note result: slice-unicode => string("d\u00a3f") | |
| ;; CHECK: [fuzz-exec] export concat-surrogates | |
| ;; CHECK-NEXT: [fuzz-exec] note result: concat-surrogates => string("\ud800\udf48") | |
| ;; CHECK: [fuzz-exec] export string.from_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] note result: string.from_code_point => string("A") | |
| ;; CHECK: [fuzz-exec] export unsigned_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] note result: unsigned_code_point => string("\u0093") | |
| ;; CHECK: [fuzz-exec] export weird_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] note result: weird_code_point => string("\u03e8") | |
| ;; CHECK: [fuzz-exec] export isolated_high_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] note result: isolated_high_code_point => string("\ud800") | |
| ;; CHECK: [fuzz-exec] export isolated_low_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] note result: isolated_low_code_point => string("\udc00") | |
| ;; CHECK: [fuzz-exec] export surrogate_pair_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] note result: surrogate_pair_code_point => string("\u286c") | |
| ;; CHECK: [fuzz-exec] export invalid_code_point | |
| ;; CHECK-NEXT: [trap invalid code point] | |
| ;; CHECK: [fuzz-exec] export string.measure | |
| ;; CHECK-NEXT: [fuzz-exec] note result: string.measure => 5 | |
| ;; CHECK: [fuzz-exec] export string.to.any | |
| ;; CHECK-NEXT: [fuzz-exec] note result: string.to.any => string("six") | |
| ;; CHECK: [fuzz-exec] export string.to.any.and.back | |
| ;; CHECK-NEXT: [fuzz-exec] note result: string.to.any.and.back => string("seven") | |
| ;; CHECK-NEXT: [fuzz-exec] comparing compare.1 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing compare.10 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing compare.2 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing compare.3 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing compare.4 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing compare.5 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing compare.6 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing compare.7 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing compare.8 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing compare.9 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing concat-surrogates | |
| ;; CHECK-NEXT: [fuzz-exec] comparing const | |
| ;; CHECK-NEXT: [fuzz-exec] comparing encode | |
| ;; CHECK-NEXT: [fuzz-exec] comparing encode-overflow | |
| ;; CHECK-NEXT: [fuzz-exec] comparing encode-unsigned | |
| ;; CHECK-NEXT: [fuzz-exec] comparing eq.1 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing eq.2 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing eq.3 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing eq.4 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing eq.5 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing get_codeunit | |
| ;; CHECK-NEXT: [fuzz-exec] comparing invalid_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] comparing isolated_high_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] comparing isolated_low_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] comparing new_2 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing new_4 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing new_empty | |
| ;; CHECK-NEXT: [fuzz-exec] comparing new_empty_oob | |
| ;; CHECK-NEXT: [fuzz-exec] comparing new_empty_oob_2 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing new_oob | |
| ;; CHECK-NEXT: [fuzz-exec] comparing new_oob_3 | |
| ;; CHECK-NEXT: [fuzz-exec] comparing new_wtf16_array | |
| ;; CHECK-NEXT: [fuzz-exec] comparing slice | |
| ;; CHECK-NEXT: [fuzz-exec] comparing slice-big | |
| ;; CHECK-NEXT: [fuzz-exec] comparing slice-ordering | |
| ;; CHECK-NEXT: [fuzz-exec] comparing slice-unicode | |
| ;; CHECK-NEXT: [fuzz-exec] comparing string.from_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] comparing string.measure | |
| ;; CHECK-NEXT: [fuzz-exec] comparing string.to.any | |
| ;; CHECK-NEXT: [fuzz-exec] comparing string.to.any.and.back | |
| ;; CHECK-NEXT: [fuzz-exec] comparing surrogate_pair_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] comparing unsigned_code_point | |
| ;; CHECK-NEXT: [fuzz-exec] comparing weird_code_point |