aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/fixtures/spec_testsuites/core/names.wast
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fixtures/spec_testsuites/core/names.wast')
-rw-r--r--tests/fixtures/spec_testsuites/core/names.wast1107
1 files changed, 1107 insertions, 0 deletions
diff --git a/tests/fixtures/spec_testsuites/core/names.wast b/tests/fixtures/spec_testsuites/core/names.wast
new file mode 100644
index 0000000..9c53234
--- /dev/null
+++ b/tests/fixtures/spec_testsuites/core/names.wast
@@ -0,0 +1,1107 @@
+;; Test files can define multiple modules. Test that implementations treat
+;; each module independently from the other.
+
+(module
+ (func (export "foo") (result i32) (i32.const 0))
+)
+
+(assert_return (invoke "foo") (i32.const 0))
+
+;; Another module, same function name, different contents.
+
+(module
+ (func (export "foo") (result i32) (i32.const 1))
+)
+
+(assert_return (invoke "foo") (i32.const 1))
+
+
+(module
+ ;; Test that we can use the empty string as a symbol.
+ (func (export "") (result i32) (i32.const 0))
+
+ ;; Test that we can use names beginning with a digit.
+ (func (export "0") (result i32) (i32.const 1))
+
+ ;; Test that we can use names beginning with a dash.
+ (func (export "-0") (result i32) (i32.const 2))
+
+ ;; Test that we can use names beginning with an underscore.
+ (func (export "_") (result i32) (i32.const 3))
+
+ ;; Test that we can use names beginning with a dollar sign.
+ (func (export "$") (result i32) (i32.const 4))
+
+ ;; Test that we can use names beginning with an at sign.
+ (func (export "@") (result i32) (i32.const 5))
+
+ ;; Test that we can use non-alphanumeric names.
+ (func (export "~!@#$%^&*()_+`-={}|[]\\:\";'<>?,./ ") (result i32) (i32.const 6))
+
+ ;; Test that we can use names that have special meaning in JS.
+ (func (export "NaN") (result i32) (i32.const 7))
+ (func (export "Infinity") (result i32) (i32.const 8))
+ (func (export "if") (result i32) (i32.const 9))
+
+ ;; Test that we can use common libc names without conflict.
+ (func (export "malloc") (result i32) (i32.const 10))
+
+ ;; Test that we can use some libc hidden names without conflict.
+ (func (export "_malloc") (result i32) (i32.const 11))
+ (func (export "__malloc") (result i32) (i32.const 12))
+
+ ;; Test that names are case-sensitive.
+ (func (export "a") (result i32) (i32.const 13))
+ (func (export "A") (result i32) (i32.const 14))
+
+ ;; Test that UTF-8 BOM code points can appear in identifiers.
+ (func (export "") (result i32) (i32.const 15))
+
+ ;; Test that Unicode normalization is not applied. These function names
+ ;; contain different codepoints which normalize to the same thing under
+ ;; NFC or NFD.
+ (func (export "Å") (result i32) (i32.const 16))
+ (func (export "Å") (result i32) (i32.const 17))
+ (func (export "Å") (result i32) (i32.const 18))
+
+ ;; Test that Unicode compatibility normalization is not applied. These
+ ;; function names contain different codepoints which normalize to the
+ ;; same thing under NFKC or NFKD.
+ (func (export "ffi") (result i32) (i32.const 19))
+ (func (export "ffi") (result i32) (i32.const 20))
+ (func (export "ffi") (result i32) (i32.const 21))
+
+ ;; Test the C0 control codes.
+ (func (export "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f") (result i32) (i32.const 22))
+ (func (export "\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f") (result i32) (i32.const 23))
+ ;; Test miscellaneous control codes.
+ (func (export " \7f") (result i32) (i32.const 24))
+ ;; Test the C1 control codes.
+ (func (export "\c2\80\c2\81\c2\82\c2\83\c2\84\c2\85\c2\86\c2\87\c2\88\c2\89\c2\8a\c2\8b\c2\8c\c2\8d\c2\8e\c2\8f") (result i32) (i32.const 25))
+ (func (export "\c2\90\c2\91\c2\92\c2\93\c2\94\c2\95\c2\96\c2\97\c2\98\c2\99\c2\9a\c2\9b\c2\9c\c2\9d\c2\9e\c2\9f") (result i32) (i32.const 26))
+ ;; Test the Unicode Specials.
+ (func (export "\ef\bf\b0\ef\bf\b1\ef\bf\b2\ef\bf\b3\ef\bf\b4\ef\bf\b5\ef\bf\b6\ef\bf\b7") (result i32) (i32.const 27))
+ (func (export "\ef\bf\b8\ef\bf\b9\ef\bf\ba\ef\bf\bb\ef\bf\bc\ef\bf\bd\ef\bf\be\ef\bf\bf") (result i32) (i32.const 28))
+
+ ;; Test that the control pictures are distinct from the control codes they
+ ;; depict. These correspond to the C0 and miscellaneous control code tests
+ ;; above.
+ (func (export "␀␁␂␃␄␅␆␇␈␉␊␋␌␍␎␏") (result i32) (i32.const 29))
+ (func (export "␐␑␒␓␔␕␖␗␘␙␚␛␜␝␞␟") (result i32) (i32.const 30))
+ (func (export "␠␡") (result i32) (i32.const 31))
+
+ ;; Test the Unicode Specials in non-escaped form (excluding U+FFFE and
+ ;; U+FFFF, so that generic tools don't detect this file as non-UTF-8).
+ (func (export "￰￱￲￳￴￵￶￷￸�") (result i32) (i32.const 32))
+
+ ;; Test a bare ZWJ code point.
+ (func (export "‍") (result i32) (i32.const 33))
+ ;; Test a bare ZWNJ code point.
+ (func (export "‌") (result i32) (i32.const 34))
+
+ ;; Test various bare joiner code points.
+ (func (export "͏") (result i32) (i32.const 35))
+ (func (export "⁠") (result i32) (i32.const 36))
+ (func (export "⵿") (result i32) (i32.const 37))
+ (func (export "𑁿") (result i32) (i32.const 38))
+ (func (export "᠎") (result i32) (i32.const 39))
+
+ ;; Test various interesting code points: reverse BOM, zero-width space,
+ ;; no-break space, soft hyphen, word joiner, ogham space mark,
+ ;; right-to-left override, left-to-right override.
+ (func (export "￯​ ­⁠ ‮‭") (result i32) (i32.const 40))
+
+ ;; Test more interesting code points: left-to-right mark, right-to-left mark,
+ ;; non-breaking hyphen, line separator, paragraph separator,
+ ;; left-to-right embedding, right-to-left embedding,
+ ;; pop directional formatting, narrow no-break space, left-to-right isolate,
+ ;; right-to-left isolate, first strong isolate, pop directional isolate.
+ (func (export "‎‏‑

‪‫‬ ⁦⁧⁨⁩") (result i32) (i32.const 41))
+
+ ;; Test some deprecated code points: inhibit symmetric swapping,
+ ;; activate symmetric swapping, inhibit arabic form shaping,
+ ;; activate arabic form shaping, national digit shapes, nominal digit shapes.
+ (func (export "") (result i32) (i32.const 42))
+
+ ;; Test "invisible" operator code points.
+ (func (export "⁡⁢⁣⁤") (result i32) (i32.const 43))
+
+ ;; Test that code points outside the BMP are supported.
+ (func (export "𐀀󟿿􏿿") (result i32) (i32.const 44))
+
+ ;; Test that WebAssembly implementations cope in the presence of Zalgo.
+ (func (export "Z̴͇̫̥̪͓͈͔͎̗̞̺̯̱̞̙̱̜̖̠̏͆̆͛͌͘͞ḁ̶̰̳̭͙̲̱̹̝͎̼͗ͨ̎̄̆͗̿̀́͟͡l̶̷͉̩̹̫̝͖̙̲̼͇͚͍̮͎̥̞̈́͊͗ͦ̈́ͫ̇́̚ͅͅg̶͕͔͚̩̓̐̅ͮ̔̐̎̂̏̾͊̍͋͊ͧ́̆ͦ͞o̡͋̔͐ͪͩ͏̢̧̫̙̤̮͖͙͓̺̜̩̼̘̠́") (result i32) (i32.const 45))
+
+ ;; Test Hangul filler code points.
+ (func (export "ᅟᅠㅤᅠ") (result i32) (i32.const 46))
+
+ ;; Test variation selectors (which are also ID_Continue code points).
+ (func (export "︀") (result i32) (i32.const 47))
+ (func (export "︄") (result i32) (i32.const 48))
+ (func (export "󠄀") (result i32) (i32.const 49))
+ (func (export "󠇯") (result i32) (i32.const 50))
+
+ ;; Test an uncombined combining code point.
+ (func (export "̈") (result i32) (i32.const 51))
+
+ ;; Test that numerous different present and historical representations of the
+ ;; "newline" concept are distinct. Tests largely inspired by:
+ ;; https://en.wikipedia.org/wiki/Newline#Representations
+ ;; https://en.wikipedia.org/wiki/Newline#Unicode and
+ ;; https://en.wikipedia.org/wiki/Newline#Reverse_and_partial_line_feeds
+ (func (export "\0a") (result i32) (i32.const 52))
+ (func (export "␤") (result i32) (i32.const 53))
+ (func (export "
") (result i32) (i32.const 54))
+ (func (export "\0d") (result i32) (i32.const 55))
+ (func (export "\0d\0a") (result i32) (i32.const 56))
+ (func (export "\0a\0d") (result i32) (i32.const 57))
+ (func (export "\1e") (result i32) (i32.const 58))
+ (func (export "\0b") (result i32) (i32.const 59))
+ (func (export "\0c") (result i32) (i32.const 60))
+ (func (export "\c2\85") (result i32) (i32.const 61))
+ (func (export "
") (result i32) (i32.const 62))
+ (func (export "…") (result i32) (i32.const 63))
+ (func (export "⏎") (result i32) (i32.const 64))
+ (func (export "\c2\8b") (result i32) (i32.const 65))
+ (func (export "\c2\8c") (result i32) (i32.const 66))
+ (func (export "\c2\8d") (result i32) (i32.const 67))
+ (func (export "↵") (result i32) (i32.const 68))
+ (func (export "↩") (result i32) (i32.const 69))
+ (func (export "⌤") (result i32) (i32.const 70))
+ (func (export "⤶") (result i32) (i32.const 71))
+ (func (export "↲") (result i32) (i32.const 72))
+ (func (export "⮨") (result i32) (i32.const 73))
+ (func (export "⮰") (result i32) (i32.const 74))
+
+ ;; Test that non-characters are not replaced by the replacement character.
+ (func (export "�") (result i32) (i32.const 75))
+ (func (export "\ef\b7\90") (result i32) (i32.const 76))
+ (func (export "\ef\b7\91") (result i32) (i32.const 77))
+ (func (export "\ef\b7\92") (result i32) (i32.const 78))
+ (func (export "\ef\b7\93") (result i32) (i32.const 79))
+ (func (export "\ef\b7\94") (result i32) (i32.const 80))
+ (func (export "\ef\b7\95") (result i32) (i32.const 81))
+ (func (export "\ef\b7\96") (result i32) (i32.const 82))
+ (func (export "\ef\b7\97") (result i32) (i32.const 83))
+ (func (export "\ef\b7\98") (result i32) (i32.const 84))
+ (func (export "\ef\b7\99") (result i32) (i32.const 85))
+ (func (export "\ef\b7\9a") (result i32) (i32.const 86))
+ (func (export "\ef\b7\9b") (result i32) (i32.const 87))
+ (func (export "\ef\b7\9c") (result i32) (i32.const 88))
+ (func (export "\ef\b7\9d") (result i32) (i32.const 89))
+ (func (export "\ef\b7\9e") (result i32) (i32.const 90))
+ (func (export "\ef\b7\9f") (result i32) (i32.const 91))
+ (func (export "\ef\b7\a0") (result i32) (i32.const 92))
+ (func (export "\ef\b7\a1") (result i32) (i32.const 93))
+ (func (export "\ef\b7\a2") (result i32) (i32.const 94))
+ (func (export "\ef\b7\a3") (result i32) (i32.const 95))
+ (func (export "\ef\b7\a4") (result i32) (i32.const 96))
+ (func (export "\ef\b7\a5") (result i32) (i32.const 97))
+ (func (export "\ef\b7\a6") (result i32) (i32.const 98))
+ (func (export "\ef\b7\a7") (result i32) (i32.const 99))
+ (func (export "\ef\b7\a8") (result i32) (i32.const 100))
+ (func (export "\ef\b7\a9") (result i32) (i32.const 101))
+ (func (export "\ef\b7\aa") (result i32) (i32.const 102))
+ (func (export "\ef\b7\ab") (result i32) (i32.const 103))
+ (func (export "\ef\b7\ac") (result i32) (i32.const 104))
+ (func (export "\ef\b7\ad") (result i32) (i32.const 105))
+ (func (export "\ef\b7\ae") (result i32) (i32.const 106))
+ (func (export "\ef\b7\af") (result i32) (i32.const 107))
+ (func (export "\ef\bf\be") (result i32) (i32.const 108))
+ (func (export "\ef\bf\bf") (result i32) (i32.const 109))
+ (func (export "\f0\9f\bf\be") (result i32) (i32.const 110))
+ (func (export "\f0\9f\bf\bf") (result i32) (i32.const 111))
+ (func (export "\f0\af\bf\be") (result i32) (i32.const 112))
+ (func (export "\f0\af\bf\bf") (result i32) (i32.const 113))
+ (func (export "\f0\bf\bf\be") (result i32) (i32.const 114))
+ (func (export "\f0\bf\bf\bf") (result i32) (i32.const 115))
+ (func (export "\f1\8f\bf\be") (result i32) (i32.const 116))
+ (func (export "\f1\8f\bf\bf") (result i32) (i32.const 117))
+ (func (export "\f1\9f\bf\be") (result i32) (i32.const 118))
+ (func (export "\f1\9f\bf\bf") (result i32) (i32.const 119))
+ (func (export "\f1\af\bf\be") (result i32) (i32.const 120))
+ (func (export "\f1\af\bf\bf") (result i32) (i32.const 121))
+ (func (export "\f1\bf\bf\be") (result i32) (i32.const 122))
+ (func (export "\f1\bf\bf\bf") (result i32) (i32.const 123))
+ (func (export "\f2\8f\bf\be") (result i32) (i32.const 124))
+ (func (export "\f2\8f\bf\bf") (result i32) (i32.const 125))
+ (func (export "\f2\9f\bf\be") (result i32) (i32.const 126))
+ (func (export "\f2\9f\bf\bf") (result i32) (i32.const 127))
+ (func (export "\f2\af\bf\be") (result i32) (i32.const 128))
+ (func (export "\f2\af\bf\bf") (result i32) (i32.const 129))
+ (func (export "\f2\bf\bf\be") (result i32) (i32.const 130))
+ (func (export "\f2\bf\bf\bf") (result i32) (i32.const 131))
+ (func (export "\f3\8f\bf\be") (result i32) (i32.const 132))
+ (func (export "\f3\8f\bf\bf") (result i32) (i32.const 133))
+ (func (export "\f3\9f\bf\be") (result i32) (i32.const 134))
+ (func (export "\f3\9f\bf\bf") (result i32) (i32.const 135))
+ (func (export "\f3\af\bf\be") (result i32) (i32.const 136))
+ (func (export "\f3\af\bf\bf") (result i32) (i32.const 137))
+ (func (export "\f3\bf\bf\be") (result i32) (i32.const 138))
+ (func (export "\f3\bf\bf\bf") (result i32) (i32.const 139))
+ (func (export "\f4\8f\bf\be") (result i32) (i32.const 140))
+ (func (export "\f4\8f\bf\bf") (result i32) (i32.const 141))
+
+ ;; Test an interrobang with combining diacritical marks above.
+ ;; https://xkcd.com/1209/
+ (func (export "̈‽̈̉") (result i32) (i32.const 142))
+
+ ;; Test that RLM/LRM don't change the logical byte order.
+ (func (export "abc") (result i32) (i32.const 143))
+ (func (export "‭abc") (result i32) (i32.const 144))
+ (func (export "‮cba") (result i32) (i32.const 145))
+ (func (export "‭abc‮") (result i32) (i32.const 146))
+ (func (export "‮cba‭") (result i32) (i32.const 147))
+
+ ;; Test that Unicode font variations are preserved.
+ (func (export "𝑨") (result i32) (i32.const 148))
+ (func (export "𝐴") (result i32) (i32.const 149))
+ (func (export "𝘈") (result i32) (i32.const 150))
+ (func (export "𝘼") (result i32) (i32.const 151))
+ (func (export "𝐀") (result i32) (i32.const 152))
+ (func (export "𝓐") (result i32) (i32.const 153))
+ (func (export "𝕬") (result i32) (i32.const 154))
+ (func (export "𝗔") (result i32) (i32.const 155))
+ (func (export "𝒜") (result i32) (i32.const 156))
+ (func (export "𝔄") (result i32) (i32.const 157))
+ (func (export "𝔸") (result i32) (i32.const 158))
+ (func (export "𝖠") (result i32) (i32.const 159))
+ (func (export "𝙰") (result i32) (i32.const 160))
+ (func (export "ᴀ") (result i32) (i32.const 161))
+
+ ;; Test that various additional letter variations are preserved.
+ ;; (U+0040, U+0061, U+0041, U+00C5, U+0041 U+030A, U+212B, and the font
+ ;; variations are covered above.)
+ (func (export "ᴬ") (result i32) (i32.const 162))
+ (func (export "Ⓐ") (result i32) (i32.const 163))
+ (func (export "A") (result i32) (i32.const 164))
+ (func (export "🄐") (result i32) (i32.const 165))
+ (func (export "🄰") (result i32) (i32.const 166))
+ (func (export "󠁁") (result i32) (i32.const 167))
+ (func (export "U+0041") (result i32) (i32.const 168))
+ (func (export "A​") (result i32) (i32.const 169))
+ (func (export "А") (result i32) (i32.const 170))
+ (func (export "Ꙗ") (result i32) (i32.const 171))
+ (func (export "ⷼ") (result i32) (i32.const 172))
+ (func (export "ⷶ") (result i32) (i32.const 173))
+ (func (export "Ɐ") (result i32) (i32.const 174))
+ (func (export "🅐") (result i32) (i32.const 175))
+ (func (export "🅰") (result i32) (i32.const 176))
+ (func (export "Ⱝ") (result i32) (i32.const 177))
+ (func (export "𐐂") (result i32) (i32.const 178))
+ (func (export "𐐈") (result i32) (i32.const 179))
+ (func (export "𐒰") (result i32) (i32.const 180))
+ (func (export "À") (result i32) (i32.const 181))
+ (func (export "Á") (result i32) (i32.const 182))
+ (func (export "Â") (result i32) (i32.const 183))
+ (func (export "Ã") (result i32) (i32.const 184))
+ (func (export "Ä") (result i32) (i32.const 185))
+ (func (export "Ā") (result i32) (i32.const 186))
+ (func (export "Ă") (result i32) (i32.const 187))
+ (func (export "Ą") (result i32) (i32.const 188))
+ (func (export "Ǎ") (result i32) (i32.const 189))
+ (func (export "Ǟ") (result i32) (i32.const 190))
+ (func (export "Ǡ") (result i32) (i32.const 191))
+ (func (export "Ǻ") (result i32) (i32.const 192))
+ (func (export "Ȁ") (result i32) (i32.const 193))
+ (func (export "Ȃ") (result i32) (i32.const 194))
+ (func (export "Ȧ") (result i32) (i32.const 195))
+ (func (export "Ⱥ") (result i32) (i32.const 196))
+ (func (export "Ӑ") (result i32) (i32.const 197))
+ (func (export "Ӓ") (result i32) (i32.const 198))
+ (func (export "ߊ") (result i32) (i32.const 199))
+ (func (export "ࠡ") (result i32) (i32.const 200))
+ (func (export "ࠢ") (result i32) (i32.const 201))
+ (func (export "ࠣ") (result i32) (i32.const 202))
+ (func (export "ࠤ") (result i32) (i32.const 203))
+ (func (export "ࠥ") (result i32) (i32.const 204))
+ (func (export "ऄ") (result i32) (i32.const 205))
+ (func (export "अ") (result i32) (i32.const 206))
+ (func (export "ॲ") (result i32) (i32.const 207))
+ (func (export "অ") (result i32) (i32.const 208))
+ (func (export "ਅ") (result i32) (i32.const 209))
+ (func (export "અ") (result i32) (i32.const 210))
+ (func (export "ଅ") (result i32) (i32.const 211))
+ (func (export "அ") (result i32) (i32.const 212))
+ (func (export "అ") (result i32) (i32.const 213))
+ (func (export "ಅ") (result i32) (i32.const 214))
+ (func (export "അ") (result i32) (i32.const 215))
+ (func (export "ะ") (result i32) (i32.const 216))
+ (func (export "ະ") (result i32) (i32.const 217))
+ (func (export "༁") (result i32) (i32.const 218))
+ (func (export "ཨ") (result i32) (i32.const 219))
+ (func (export "ྸ") (result i32) (i32.const 220))
+ (func (export "အ") (result i32) (i32.const 221))
+ (func (export "ဢ") (result i32) (i32.const 222))
+ (func (export "ႜ") (result i32) (i32.const 223))
+ (func (export "ᅡ") (result i32) (i32.const 224))
+ (func (export "አ") (result i32) (i32.const 225))
+ (func (export "ዐ") (result i32) (i32.const 226))
+ (func (export "Ꭰ") (result i32) (i32.const 227))
+ (func (export "ᐊ") (result i32) (i32.const 228))
+ (func (export "ᖳ") (result i32) (i32.const 229))
+ (func (export "ᚨ") (result i32) (i32.const 230))
+ (func (export "ᚪ") (result i32) (i32.const 231))
+ (func (export "ᛆ") (result i32) (i32.const 232))
+ (func (export "ᜀ") (result i32) (i32.const 233))
+ (func (export "ᜠ") (result i32) (i32.const 234))
+ (func (export "ᝀ") (result i32) (i32.const 235))
+ (func (export "ᝠ") (result i32) (i32.const 236))
+ (func (export "ᠠ") (result i32) (i32.const 237))
+ (func (export "ᢇ") (result i32) (i32.const 238))
+ (func (export "ᤠ") (result i32) (i32.const 239))
+ (func (export "ᥣ") (result i32) (i32.const 240))
+ (func (export "ᨕ") (result i32) (i32.const 241))
+ (func (export "ᩋ") (result i32) (i32.const 242))
+ (func (export "ᩡ") (result i32) (i32.const 243))
+ (func (export "ᮃ") (result i32) (i32.const 244))
+ (func (export "ᯀ") (result i32) (i32.const 245))
+ (func (export "ᯁ") (result i32) (i32.const 246))
+ (func (export "ᰣ") (result i32) (i32.const 247))
+ (func (export "Ḁ") (result i32) (i32.const 248))
+ (func (export "Ạ") (result i32) (i32.const 249))
+ (func (export "Ả") (result i32) (i32.const 250))
+ (func (export "Ấ") (result i32) (i32.const 251))
+ (func (export "Ầ") (result i32) (i32.const 252))
+ (func (export "Ẩ") (result i32) (i32.const 253))
+ (func (export "Ẫ") (result i32) (i32.const 254))
+ (func (export "Ậ") (result i32) (i32.const 255))
+ (func (export "Ắ") (result i32) (i32.const 256))
+ (func (export "Ằ") (result i32) (i32.const 257))
+ (func (export "Ẳ") (result i32) (i32.const 258))
+ (func (export "Ẵ") (result i32) (i32.const 259))
+ (func (export "Ặ") (result i32) (i32.const 260))
+ (func (export "あ") (result i32) (i32.const 261))
+ (func (export "ア") (result i32) (i32.const 262))
+ (func (export "ㄚ") (result i32) (i32.const 263))
+ (func (export "ㅏ") (result i32) (i32.const 264))
+ (func (export "㈎") (result i32) (i32.const 265))
+ (func (export "㈏") (result i32) (i32.const 266))
+ (func (export "㈐") (result i32) (i32.const 267))
+ (func (export "㈑") (result i32) (i32.const 268))
+ (func (export "㈒") (result i32) (i32.const 269))
+ (func (export "㈓") (result i32) (i32.const 270))
+ (func (export "㈔") (result i32) (i32.const 271))
+ (func (export "㈕") (result i32) (i32.const 272))
+ (func (export "㈖") (result i32) (i32.const 273))
+ (func (export "㈗") (result i32) (i32.const 274))
+ (func (export "㈘") (result i32) (i32.const 275))
+ (func (export "㈙") (result i32) (i32.const 276))
+ (func (export "㈚") (result i32) (i32.const 277))
+ (func (export "㈛") (result i32) (i32.const 278))
+ (func (export "㉮") (result i32) (i32.const 279))
+ (func (export "㉯") (result i32) (i32.const 280))
+ (func (export "㉰") (result i32) (i32.const 281))
+ (func (export "㉱") (result i32) (i32.const 282))
+ (func (export "㉲") (result i32) (i32.const 283))
+ (func (export "㉳") (result i32) (i32.const 284))
+ (func (export "㉴") (result i32) (i32.const 285))
+ (func (export "㉵") (result i32) (i32.const 286))
+ (func (export "㉶") (result i32) (i32.const 287))
+ (func (export "㉷") (result i32) (i32.const 288))
+ (func (export "㉸") (result i32) (i32.const 289))
+ (func (export "㉹") (result i32) (i32.const 290))
+ (func (export "㉺") (result i32) (i32.const 291))
+ (func (export "㉻") (result i32) (i32.const 292))
+ (func (export "㋐") (result i32) (i32.const 293))
+ (func (export "ꀊ") (result i32) (i32.const 294))
+ (func (export "ꓮ") (result i32) (i32.const 295))
+ (func (export "ꕉ") (result i32) (i32.const 296))
+ (func (export "ꚠ") (result i32) (i32.const 297))
+ (func (export "ꠀ") (result i32) (i32.const 298))
+ (func (export "ꠣ") (result i32) (i32.const 299))
+ (func (export "ꡝ") (result i32) (i32.const 300))
+ (func (export "ꢂ") (result i32) (i32.const 301))
+ (func (export "꣪") (result i32) (i32.const 302))
+ (func (export "ꤢ") (result i32) (i32.const 303))
+ (func (export "ꥆ") (result i32) (i32.const 304))
+ (func (export "ꦄ") (result i32) (i32.const 305))
+ (func (export "ꨀ") (result i32) (i32.const 306))
+ (func (export "ア") (result i32) (i32.const 307))
+ (func (export "ᅡ") (result i32) (i32.const 308))
+ (func (export "𐀀") (result i32) (i32.const 309))
+ (func (export "𐊀") (result i32) (i32.const 310))
+ (func (export "𐊠") (result i32) (i32.const 311))
+ (func (export "𐌀") (result i32) (i32.const 312))
+ (func (export "𐎠") (result i32) (i32.const 313))
+ (func (export "𐒖") (result i32) (i32.const 314))
+ (func (export "𐔀") (result i32) (i32.const 315))
+ (func (export "𐝀") (result i32) (i32.const 316))
+ (func (export "𐠀") (result i32) (i32.const 317))
+ (func (export "𐤠") (result i32) (i32.const 318))
+ (func (export "𐦀") (result i32) (i32.const 319))
+ (func (export "𐦠") (result i32) (i32.const 320))
+ (func (export "𐨀") (result i32) (i32.const 321))
+ (func (export "𐬀") (result i32) (i32.const 322))
+ (func (export "𐰀") (result i32) (i32.const 323))
+ (func (export "𐰁") (result i32) (i32.const 324))
+ (func (export "𐲀") (result i32) (i32.const 325))
+ (func (export "𑀅") (result i32) (i32.const 326))
+ (func (export "𑂃") (result i32) (i32.const 327))
+ (func (export "𑄧") (result i32) (i32.const 328))
+ (func (export "𑅐") (result i32) (i32.const 329))
+ (func (export "𑆃") (result i32) (i32.const 330))
+ (func (export "𑈀") (result i32) (i32.const 331))
+ (func (export "𑊀") (result i32) (i32.const 332))
+ (func (export "𑊰") (result i32) (i32.const 333))
+ (func (export "𑌅") (result i32) (i32.const 334))
+ (func (export "𑍰") (result i32) (i32.const 335))
+ (func (export "𑐀") (result i32) (i32.const 336))
+ (func (export "𑒁") (result i32) (i32.const 337))
+ (func (export "𑖀") (result i32) (i32.const 338))
+ (func (export "𑘀") (result i32) (i32.const 339))
+ (func (export "𑚀") (result i32) (i32.const 340))
+ (func (export "𑜒") (result i32) (i32.const 341))
+ (func (export "𑜠") (result i32) (i32.const 342))
+ (func (export "𑢡") (result i32) (i32.const 343))
+ (func (export "𑫕") (result i32) (i32.const 344))
+ (func (export "𑰀") (result i32) (i32.const 345))
+ (func (export "𑲏") (result i32) (i32.const 346))
+ (func (export "𑲯") (result i32) (i32.const 347))
+ (func (export "𒀀") (result i32) (i32.const 348))
+ (func (export "𖧕") (result i32) (i32.const 349))
+ (func (export "𖩆") (result i32) (i32.const 350))
+ (func (export "𖫧") (result i32) (i32.const 351))
+ (func (export "𖽔") (result i32) (i32.const 352))
+ (func (export "𛱁") (result i32) (i32.const 353))
+ (func (export "𛱤") (result i32) (i32.const 354))
+ (func (export "𞠣") (result i32) (i32.const 355))
+ (func (export "🇦") (result i32) (i32.const 356))
+ (func (export "Ɑ") (result i32) (i32.const 357))
+ (func (export "Λ") (result i32) (i32.const 358))
+ (func (export "Ɒ") (result i32) (i32.const 359))
+ (func (export "ª") (result i32) (i32.const 360))
+ (func (export "∀") (result i32) (i32.const 361))
+ (func (export "₳") (result i32) (i32.const 362))
+ (func (export "𐤀") (result i32) (i32.const 363))
+ (func (export "Ⲁ") (result i32) (i32.const 364))
+ (func (export "𐌰") (result i32) (i32.const 365))
+ (func (export "Ά") (result i32) (i32.const 366))
+ (func (export "Α") (result i32) (i32.const 367))
+ (func (export "Ἀ") (result i32) (i32.const 368))
+ (func (export "Ἁ") (result i32) (i32.const 369))
+ (func (export "Ἂ") (result i32) (i32.const 370))
+ (func (export "Ἃ") (result i32) (i32.const 371))
+ (func (export "Ἄ") (result i32) (i32.const 372))
+ (func (export "Ἅ") (result i32) (i32.const 373))
+ (func (export "Ἆ") (result i32) (i32.const 374))
+ (func (export "Ἇ") (result i32) (i32.const 375))
+ (func (export "ᾈ") (result i32) (i32.const 376))
+ (func (export "ᾉ") (result i32) (i32.const 377))
+ (func (export "ᾊ") (result i32) (i32.const 378))
+ (func (export "ᾋ") (result i32) (i32.const 379))
+ (func (export "ᾌ") (result i32) (i32.const 380))
+ (func (export "ᾍ") (result i32) (i32.const 381))
+ (func (export "ᾎ") (result i32) (i32.const 382))
+ (func (export "ᾏ") (result i32) (i32.const 383))
+ (func (export "Ᾰ") (result i32) (i32.const 384))
+ (func (export "Ᾱ") (result i32) (i32.const 385))
+ (func (export "Ὰ") (result i32) (i32.const 386))
+ (func (export "Ά") (result i32) (i32.const 387))
+ (func (export "ᾼ") (result i32) (i32.const 388))
+ (func (export "𝚨") (result i32) (i32.const 389))
+ (func (export "𝛢") (result i32) (i32.const 390))
+ (func (export "𝜜") (result i32) (i32.const 391))
+ (func (export "𝝖") (result i32) (i32.const 392))
+ (func (export "𝞐") (result i32) (i32.const 393))
+ (func (export "⍶") (result i32) (i32.const 394))
+ (func (export "⍺") (result i32) (i32.const 395))
+ (func (export "⩜") (result i32) (i32.const 396))
+ (func (export "ᗅ") (result i32) (i32.const 397))
+ (func (export "Ꭺ") (result i32) (i32.const 398))
+
+ ;; Test unmatched "closing" and "opening" code points.
+ (func (export ")˺˼𔗏𝅴𝅶𝅸𝅺⁾₎❩❫⟯﴿︶﹚)⦆󠀩❳❵⟧⟩⟫⟭⦈⦊⦖⸣⸥︘︸︺︼︾﹀﹂﹄﹈﹜﹞]}」󠁝󠁽»’”›❯") (result i32) (i32.const 399))
+ (func (export "(˹˻𔗎𝅳𝅵𝅷𝅹⁽₍❨❪⟮﴾︵﹙(⦅󠀨❲❴⟦⟨⟪⟬⦇⦉⦕⸢⸤︗︷︹︻︽︿﹁﹃﹇﹛﹝[{「󠁛󠁻«‘“‹❮") (result i32) (i32.const 400))
+ (func (export "𝪋𝪤") (result i32) (i32.const 401))
+ (func (export "𝪋") (result i32) (i32.const 402))
+
+ ;; Test that Unicode fraction normalization is not applied.
+ (func (export "½") (result i32) (i32.const 403))
+ (func (export "1⁄2") (result i32) (i32.const 404))
+ (func (export "1/2") (result i32) (i32.const 405))
+ (func (export "୳") (result i32) (i32.const 406))
+ (func (export "൴") (result i32) (i32.const 407))
+ (func (export "⳽") (result i32) (i32.const 408))
+ (func (export "꠱") (result i32) (i32.const 409))
+ (func (export "𐅁") (result i32) (i32.const 410))
+ (func (export "𐅵") (result i32) (i32.const 411))
+ (func (export "𐅶") (result i32) (i32.const 412))
+ (func (export "𐦽") (result i32) (i32.const 413))
+ (func (export "𐹻") (result i32) (i32.const 414))
+
+ ;; Test a full-width quote.
+ (func (export """) (result i32) (i32.const 415))
+
+ ;; Test that different present and historical representations of the "delete"
+ ;; concept are distinct.
+ (func (export "\7f") (result i32) (i32.const 416))
+ (func (export "\08") (result i32) (i32.const 417))
+ (func (export "⌫") (result i32) (i32.const 418))
+ (func (export "⌦") (result i32) (i32.const 419))
+ (func (export "␈") (result i32) (i32.const 420))
+ (func (export "␡") (result i32) (i32.const 421))
+ (func (export "᷻") (result i32) (i32.const 422))
+ (func (export "\0f") (result i32) (i32.const 423))
+ (func (export "←") (result i32) (i32.const 424))
+ (func (export "⌧") (result i32) (i32.const 425))
+ (func (export "⍒") (result i32) (i32.const 426))
+ (func (export "⍔") (result i32) (i32.const 427))
+ (func (export "⍢") (result i32) (i32.const 428))
+ (func (export "⍫") (result i32) (i32.const 429))
+
+ ;; Test that different representations of the "substitute" concept are
+ ;; distinct. (U+FFFD is covered above.)
+ (func (export "\1a") (result i32) (i32.const 430))
+ (func (export "␦") (result i32) (i32.const 431))
+ (func (export "␚") (result i32) (i32.const 432))
+ (func (export "") (result i32) (i32.const 433))
+ (func (export "?") (result i32) (i32.const 434))
+ (func (export "¿") (result i32) (i32.const 435))
+ (func (export "᥅") (result i32) (i32.const 436))
+ (func (export ";") (result i32) (i32.const 437))
+ (func (export "՞") (result i32) (i32.const 438))
+ (func (export "؟") (result i32) (i32.const 439))
+ (func (export "፧") (result i32) (i32.const 440))
+ (func (export "⁇") (result i32) (i32.const 441))
+ (func (export "⍰") (result i32) (i32.const 442))
+ (func (export "❓") (result i32) (i32.const 443))
+ (func (export "❔") (result i32) (i32.const 444))
+ (func (export "⳺") (result i32) (i32.const 445))
+ (func (export "⳻") (result i32) (i32.const 446))
+ (func (export "⸮") (result i32) (i32.const 447))
+ (func (export "㉄") (result i32) (i32.const 448))
+ (func (export "꘏") (result i32) (i32.const 449))
+ (func (export "꛷") (result i32) (i32.const 450))
+ (func (export "︖") (result i32) (i32.const 451))
+ (func (export "﹖") (result i32) (i32.const 452))
+ (func (export "?") (result i32) (i32.const 453))
+ (func (export "𑅃") (result i32) (i32.const 454))
+ (func (export "𞥟") (result i32) (i32.const 455))
+ (func (export "󠀿") (result i32) (i32.const 456))
+ (func (export "𖡄") (result i32) (i32.const 457))
+ (func (export "⯑") (result i32) (i32.const 458))
+
+ ;; Test that different present and historical representations of the
+ ;; "paragraph" concept are distinct. (U+2029 is covered above).
+ (func (export "¶") (result i32) (i32.const 459))
+ (func (export "⁋") (result i32) (i32.const 460))
+ (func (export "܀") (result i32) (i32.const 461))
+ (func (export "჻") (result i32) (i32.const 462))
+ (func (export "፨") (result i32) (i32.const 463))
+ (func (export "〷") (result i32) (i32.const 464))
+ (func (export "❡") (result i32) (i32.const 465))
+ (func (export "⸏") (result i32) (i32.const 466))
+ (func (export "⸐") (result i32) (i32.const 467))
+ (func (export "⸑") (result i32) (i32.const 468))
+ (func (export "⸎") (result i32) (i32.const 469))
+ (func (export "\14") (result i32) (i32.const 470)) ;; ¶ in CP437
+ (func (export "☙") (result i32) (i32.const 471))
+ (func (export "⸿") (result i32) (i32.const 472))
+ (func (export "〇") (result i32) (i32.const 473))
+ (func (export "๛") (result i32) (i32.const 474))
+
+ ;; Test an unusual character.
+ (func (export "ꙮ") (result i32) (i32.const 475))
+
+ ;; Test the three characters whose normalization forms under NFC, NFD, NFKC,
+ ;; and NFKD are all different.
+ ;; http://unicode.org/faq/normalization.html#6
+ (func (export "ϓ") (result i32) (i32.const 476))
+ (func (export "ϔ") (result i32) (i32.const 477))
+ (func (export "ẛ") (result i32) (i32.const 478))
+)
+
+(assert_return (invoke "") (i32.const 0))
+(assert_return (invoke "0") (i32.const 1))
+(assert_return (invoke "-0") (i32.const 2))
+(assert_return (invoke "_") (i32.const 3))
+(assert_return (invoke "$") (i32.const 4))
+(assert_return (invoke "@") (i32.const 5))
+(assert_return (invoke "~!@#$%^&*()_+`-={}|[]\\:\";'<>?,./ ") (i32.const 6))
+(assert_return (invoke "NaN") (i32.const 7))
+(assert_return (invoke "Infinity") (i32.const 8))
+(assert_return (invoke "if") (i32.const 9))
+(assert_return (invoke "malloc") (i32.const 10))
+(assert_return (invoke "_malloc") (i32.const 11))
+(assert_return (invoke "__malloc") (i32.const 12))
+(assert_return (invoke "a") (i32.const 13))
+(assert_return (invoke "A") (i32.const 14))
+(assert_return (invoke "") (i32.const 15))
+(assert_return (invoke "Å") (i32.const 16))
+(assert_return (invoke "Å") (i32.const 17))
+(assert_return (invoke "Å") (i32.const 18))
+(assert_return (invoke "ffi") (i32.const 19))
+(assert_return (invoke "ffi") (i32.const 20))
+(assert_return (invoke "ffi") (i32.const 21))
+(assert_return (invoke "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f") (i32.const 22))
+(assert_return (invoke "\10\11\12\13\14\15\16\17\18\19\1a\1b\1c\1d\1e\1f") (i32.const 23))
+(assert_return (invoke " \7f") (i32.const 24))
+(assert_return (invoke "\c2\80\c2\81\c2\82\c2\83\c2\84\c2\85\c2\86\c2\87\c2\88\c2\89\c2\8a\c2\8b\c2\8c\c2\8d\c2\8e\c2\8f") (i32.const 25))
+(assert_return (invoke "\c2\90\c2\91\c2\92\c2\93\c2\94\c2\95\c2\96\c2\97\c2\98\c2\99\c2\9a\c2\9b\c2\9c\c2\9d\c2\9e\c2\9f") (i32.const 26))
+(assert_return (invoke "\ef\bf\b0\ef\bf\b1\ef\bf\b2\ef\bf\b3\ef\bf\b4\ef\bf\b5\ef\bf\b6\ef\bf\b7") (i32.const 27))
+(assert_return (invoke "\ef\bf\b8\ef\bf\b9\ef\bf\ba\ef\bf\bb\ef\bf\bc\ef\bf\bd\ef\bf\be\ef\bf\bf") (i32.const 28))
+(assert_return (invoke "␀␁␂␃␄␅␆␇␈␉␊␋␌␍␎␏") (i32.const 29))
+(assert_return (invoke "␐␑␒␓␔␕␖␗␘␙␚␛␜␝␞␟") (i32.const 30))
+(assert_return (invoke "␠␡") (i32.const 31))
+(assert_return (invoke "￰￱￲￳￴￵￶￷￸�") (i32.const 32))
+(assert_return (invoke "‍") (i32.const 33))
+(assert_return (invoke "‌") (i32.const 34))
+(assert_return (invoke "͏") (i32.const 35))
+(assert_return (invoke "⁠") (i32.const 36))
+(assert_return (invoke "⵿") (i32.const 37))
+(assert_return (invoke "𑁿") (i32.const 38))
+(assert_return (invoke "᠎") (i32.const 39))
+(assert_return (invoke "￯​ ­⁠ ‮‭") (i32.const 40))
+(assert_return (invoke "‎‏‑

‪‫‬ ⁦⁧⁨⁩") (i32.const 41))
+(assert_return (invoke "") (i32.const 42))
+(assert_return (invoke "⁡⁢⁣⁤") (i32.const 43))
+(assert_return (invoke "𐀀󟿿􏿿") (i32.const 44))
+(assert_return (invoke "Z̴͇̫̥̪͓͈͔͎̗̞̺̯̱̞̙̱̜̖̠̏͆̆͛͌͘͞ḁ̶̰̳̭͙̲̱̹̝͎̼͗ͨ̎̄̆͗̿̀́͟͡l̶̷͉̩̹̫̝͖̙̲̼͇͚͍̮͎̥̞̈́͊͗ͦ̈́ͫ̇́̚ͅͅg̶͕͔͚̩̓̐̅ͮ̔̐̎̂̏̾͊̍͋͊ͧ́̆ͦ͞o̡͋̔͐ͪͩ͏̢̧̫̙̤̮͖͙͓̺̜̩̼̘̠́") (i32.const 45))
+(assert_return (invoke "ᅟᅠㅤᅠ") (i32.const 46))
+(assert_return (invoke "︀") (i32.const 47))
+(assert_return (invoke "︄") (i32.const 48))
+(assert_return (invoke "󠄀") (i32.const 49))
+(assert_return (invoke "󠇯") (i32.const 50))
+(assert_return (invoke "̈") (i32.const 51))
+(assert_return (invoke "\0a") (i32.const 52))
+(assert_return (invoke "␤") (i32.const 53))
+(assert_return (invoke "
") (i32.const 54))
+(assert_return (invoke "\0d") (i32.const 55))
+(assert_return (invoke "\0d\0a") (i32.const 56))
+(assert_return (invoke "\0a\0d") (i32.const 57))
+(assert_return (invoke "\1e") (i32.const 58))
+(assert_return (invoke "\0b") (i32.const 59))
+(assert_return (invoke "\0c") (i32.const 60))
+(assert_return (invoke "\c2\85") (i32.const 61))
+(assert_return (invoke "
") (i32.const 62))
+(assert_return (invoke "…") (i32.const 63))
+(assert_return (invoke "⏎") (i32.const 64))
+(assert_return (invoke "\c2\8b") (i32.const 65))
+(assert_return (invoke "\c2\8c") (i32.const 66))
+(assert_return (invoke "\c2\8d") (i32.const 67))
+(assert_return (invoke "↵") (i32.const 68))
+(assert_return (invoke "↩") (i32.const 69))
+(assert_return (invoke "⌤") (i32.const 70))
+(assert_return (invoke "⤶") (i32.const 71))
+(assert_return (invoke "↲") (i32.const 72))
+(assert_return (invoke "⮨") (i32.const 73))
+(assert_return (invoke "⮰") (i32.const 74))
+(assert_return (invoke "�") (i32.const 75))
+(assert_return (invoke "\ef\b7\90") (i32.const 76))
+(assert_return (invoke "\ef\b7\91") (i32.const 77))
+(assert_return (invoke "\ef\b7\92") (i32.const 78))
+(assert_return (invoke "\ef\b7\93") (i32.const 79))
+(assert_return (invoke "\ef\b7\94") (i32.const 80))
+(assert_return (invoke "\ef\b7\95") (i32.const 81))
+(assert_return (invoke "\ef\b7\96") (i32.const 82))
+(assert_return (invoke "\ef\b7\97") (i32.const 83))
+(assert_return (invoke "\ef\b7\98") (i32.const 84))
+(assert_return (invoke "\ef\b7\99") (i32.const 85))
+(assert_return (invoke "\ef\b7\9a") (i32.const 86))
+(assert_return (invoke "\ef\b7\9b") (i32.const 87))
+(assert_return (invoke "\ef\b7\9c") (i32.const 88))
+(assert_return (invoke "\ef\b7\9d") (i32.const 89))
+(assert_return (invoke "\ef\b7\9e") (i32.const 90))
+(assert_return (invoke "\ef\b7\9f") (i32.const 91))
+(assert_return (invoke "\ef\b7\a0") (i32.const 92))
+(assert_return (invoke "\ef\b7\a1") (i32.const 93))
+(assert_return (invoke "\ef\b7\a2") (i32.const 94))
+(assert_return (invoke "\ef\b7\a3") (i32.const 95))
+(assert_return (invoke "\ef\b7\a4") (i32.const 96))
+(assert_return (invoke "\ef\b7\a5") (i32.const 97))
+(assert_return (invoke "\ef\b7\a6") (i32.const 98))
+(assert_return (invoke "\ef\b7\a7") (i32.const 99))
+(assert_return (invoke "\ef\b7\a8") (i32.const 100))
+(assert_return (invoke "\ef\b7\a9") (i32.const 101))
+(assert_return (invoke "\ef\b7\aa") (i32.const 102))
+(assert_return (invoke "\ef\b7\ab") (i32.const 103))
+(assert_return (invoke "\ef\b7\ac") (i32.const 104))
+(assert_return (invoke "\ef\b7\ad") (i32.const 105))
+(assert_return (invoke "\ef\b7\ae") (i32.const 106))
+(assert_return (invoke "\ef\b7\af") (i32.const 107))
+(assert_return (invoke "\ef\bf\be") (i32.const 108))
+(assert_return (invoke "\ef\bf\bf") (i32.const 109))
+(assert_return (invoke "\f0\9f\bf\be") (i32.const 110))
+(assert_return (invoke "\f0\9f\bf\bf") (i32.const 111))
+(assert_return (invoke "\f0\af\bf\be") (i32.const 112))
+(assert_return (invoke "\f0\af\bf\bf") (i32.const 113))
+(assert_return (invoke "\f0\bf\bf\be") (i32.const 114))
+(assert_return (invoke "\f0\bf\bf\bf") (i32.const 115))
+(assert_return (invoke "\f1\8f\bf\be") (i32.const 116))
+(assert_return (invoke "\f1\8f\bf\bf") (i32.const 117))
+(assert_return (invoke "\f1\9f\bf\be") (i32.const 118))
+(assert_return (invoke "\f1\9f\bf\bf") (i32.const 119))
+(assert_return (invoke "\f1\af\bf\be") (i32.const 120))
+(assert_return (invoke "\f1\af\bf\bf") (i32.const 121))
+(assert_return (invoke "\f1\bf\bf\be") (i32.const 122))
+(assert_return (invoke "\f1\bf\bf\bf") (i32.const 123))
+(assert_return (invoke "\f2\8f\bf\be") (i32.const 124))
+(assert_return (invoke "\f2\8f\bf\bf") (i32.const 125))
+(assert_return (invoke "\f2\9f\bf\be") (i32.const 126))
+(assert_return (invoke "\f2\9f\bf\bf") (i32.const 127))
+(assert_return (invoke "\f2\af\bf\be") (i32.const 128))
+(assert_return (invoke "\f2\af\bf\bf") (i32.const 129))
+(assert_return (invoke "\f2\bf\bf\be") (i32.const 130))
+(assert_return (invoke "\f2\bf\bf\bf") (i32.const 131))
+(assert_return (invoke "\f3\8f\bf\be") (i32.const 132))
+(assert_return (invoke "\f3\8f\bf\bf") (i32.const 133))
+(assert_return (invoke "\f3\9f\bf\be") (i32.const 134))
+(assert_return (invoke "\f3\9f\bf\bf") (i32.const 135))
+(assert_return (invoke "\f3\af\bf\be") (i32.const 136))
+(assert_return (invoke "\f3\af\bf\bf") (i32.const 137))
+(assert_return (invoke "\f3\bf\bf\be") (i32.const 138))
+(assert_return (invoke "\f3\bf\bf\bf") (i32.const 139))
+(assert_return (invoke "\f4\8f\bf\be") (i32.const 140))
+(assert_return (invoke "\f4\8f\bf\bf") (i32.const 141))
+(assert_return (invoke "̈‽̈̉") (i32.const 142))
+(assert_return (invoke "abc") (i32.const 143))
+(assert_return (invoke "‭abc") (i32.const 144))
+(assert_return (invoke "‮cba") (i32.const 145))
+(assert_return (invoke "‭abc‮") (i32.const 146))
+(assert_return (invoke "‮cba‭") (i32.const 147))
+(assert_return (invoke "𝑨") (i32.const 148))
+(assert_return (invoke "𝐴") (i32.const 149))
+(assert_return (invoke "𝘈") (i32.const 150))
+(assert_return (invoke "𝘼") (i32.const 151))
+(assert_return (invoke "𝐀") (i32.const 152))
+(assert_return (invoke "𝓐") (i32.const 153))
+(assert_return (invoke "𝕬") (i32.const 154))
+(assert_return (invoke "𝗔") (i32.const 155))
+(assert_return (invoke "𝒜") (i32.const 156))
+(assert_return (invoke "𝔄") (i32.const 157))
+(assert_return (invoke "𝔸") (i32.const 158))
+(assert_return (invoke "𝖠") (i32.const 159))
+(assert_return (invoke "𝙰") (i32.const 160))
+(assert_return (invoke "ᴀ") (i32.const 161))
+(assert_return (invoke "ᴬ") (i32.const 162))
+(assert_return (invoke "Ⓐ") (i32.const 163))
+(assert_return (invoke "A") (i32.const 164))
+(assert_return (invoke "🄐") (i32.const 165))
+(assert_return (invoke "🄰") (i32.const 166))
+(assert_return (invoke "󠁁") (i32.const 167))
+(assert_return (invoke "U+0041") (i32.const 168))
+(assert_return (invoke "A​") (i32.const 169))
+(assert_return (invoke "А") (i32.const 170))
+(assert_return (invoke "Ꙗ") (i32.const 171))
+(assert_return (invoke "ⷼ") (i32.const 172))
+(assert_return (invoke "ⷶ") (i32.const 173))
+(assert_return (invoke "Ɐ") (i32.const 174))
+(assert_return (invoke "🅐") (i32.const 175))
+(assert_return (invoke "🅰") (i32.const 176))
+(assert_return (invoke "Ⱝ") (i32.const 177))
+(assert_return (invoke "𐐂") (i32.const 178))
+(assert_return (invoke "𐐈") (i32.const 179))
+(assert_return (invoke "𐒰") (i32.const 180))
+(assert_return (invoke "À") (i32.const 181))
+(assert_return (invoke "Á") (i32.const 182))
+(assert_return (invoke "Â") (i32.const 183))
+(assert_return (invoke "Ã") (i32.const 184))
+(assert_return (invoke "Ä") (i32.const 185))
+(assert_return (invoke "Ā") (i32.const 186))
+(assert_return (invoke "Ă") (i32.const 187))
+(assert_return (invoke "Ą") (i32.const 188))
+(assert_return (invoke "Ǎ") (i32.const 189))
+(assert_return (invoke "Ǟ") (i32.const 190))
+(assert_return (invoke "Ǡ") (i32.const 191))
+(assert_return (invoke "Ǻ") (i32.const 192))
+(assert_return (invoke "Ȁ") (i32.const 193))
+(assert_return (invoke "Ȃ") (i32.const 194))
+(assert_return (invoke "Ȧ") (i32.const 195))
+(assert_return (invoke "Ⱥ") (i32.const 196))
+(assert_return (invoke "Ӑ") (i32.const 197))
+(assert_return (invoke "Ӓ") (i32.const 198))
+(assert_return (invoke "ߊ") (i32.const 199))
+(assert_return (invoke "ࠡ") (i32.const 200))
+(assert_return (invoke "ࠢ") (i32.const 201))
+(assert_return (invoke "ࠣ") (i32.const 202))
+(assert_return (invoke "ࠤ") (i32.const 203))
+(assert_return (invoke "ࠥ") (i32.const 204))
+(assert_return (invoke "ऄ") (i32.const 205))
+(assert_return (invoke "अ") (i32.const 206))
+(assert_return (invoke "ॲ") (i32.const 207))
+(assert_return (invoke "অ") (i32.const 208))
+(assert_return (invoke "ਅ") (i32.const 209))
+(assert_return (invoke "અ") (i32.const 210))
+(assert_return (invoke "ଅ") (i32.const 211))
+(assert_return (invoke "அ") (i32.const 212))
+(assert_return (invoke "అ") (i32.const 213))
+(assert_return (invoke "ಅ") (i32.const 214))
+(assert_return (invoke "അ") (i32.const 215))
+(assert_return (invoke "ะ") (i32.const 216))
+(assert_return (invoke "ະ") (i32.const 217))
+(assert_return (invoke "༁") (i32.const 218))
+(assert_return (invoke "ཨ") (i32.const 219))
+(assert_return (invoke "ྸ") (i32.const 220))
+(assert_return (invoke "အ") (i32.const 221))
+(assert_return (invoke "ဢ") (i32.const 222))
+(assert_return (invoke "ႜ") (i32.const 223))
+(assert_return (invoke "ᅡ") (i32.const 224))
+(assert_return (invoke "አ") (i32.const 225))
+(assert_return (invoke "ዐ") (i32.const 226))
+(assert_return (invoke "Ꭰ") (i32.const 227))
+(assert_return (invoke "ᐊ") (i32.const 228))
+(assert_return (invoke "ᖳ") (i32.const 229))
+(assert_return (invoke "ᚨ") (i32.const 230))
+(assert_return (invoke "ᚪ") (i32.const 231))
+(assert_return (invoke "ᛆ") (i32.const 232))
+(assert_return (invoke "ᜀ") (i32.const 233))
+(assert_return (invoke "ᜠ") (i32.const 234))
+(assert_return (invoke "ᝀ") (i32.const 235))
+(assert_return (invoke "ᝠ") (i32.const 236))
+(assert_return (invoke "ᠠ") (i32.const 237))
+(assert_return (invoke "ᢇ") (i32.const 238))
+(assert_return (invoke "ᤠ") (i32.const 239))
+(assert_return (invoke "ᥣ") (i32.const 240))
+(assert_return (invoke "ᨕ") (i32.const 241))
+(assert_return (invoke "ᩋ") (i32.const 242))
+(assert_return (invoke "ᩡ") (i32.const 243))
+(assert_return (invoke "ᮃ") (i32.const 244))
+(assert_return (invoke "ᯀ") (i32.const 245))
+(assert_return (invoke "ᯁ") (i32.const 246))
+(assert_return (invoke "ᰣ") (i32.const 247))
+(assert_return (invoke "Ḁ") (i32.const 248))
+(assert_return (invoke "Ạ") (i32.const 249))
+(assert_return (invoke "Ả") (i32.const 250))
+(assert_return (invoke "Ấ") (i32.const 251))
+(assert_return (invoke "Ầ") (i32.const 252))
+(assert_return (invoke "Ẩ") (i32.const 253))
+(assert_return (invoke "Ẫ") (i32.const 254))
+(assert_return (invoke "Ậ") (i32.const 255))
+(assert_return (invoke "Ắ") (i32.const 256))
+(assert_return (invoke "Ằ") (i32.const 257))
+(assert_return (invoke "Ẳ") (i32.const 258))
+(assert_return (invoke "Ẵ") (i32.const 259))
+(assert_return (invoke "Ặ") (i32.const 260))
+(assert_return (invoke "あ") (i32.const 261))
+(assert_return (invoke "ア") (i32.const 262))
+(assert_return (invoke "ㄚ") (i32.const 263))
+(assert_return (invoke "ㅏ") (i32.const 264))
+(assert_return (invoke "㈎") (i32.const 265))
+(assert_return (invoke "㈏") (i32.const 266))
+(assert_return (invoke "㈐") (i32.const 267))
+(assert_return (invoke "㈑") (i32.const 268))
+(assert_return (invoke "㈒") (i32.const 269))
+(assert_return (invoke "㈓") (i32.const 270))
+(assert_return (invoke "㈔") (i32.const 271))
+(assert_return (invoke "㈕") (i32.const 272))
+(assert_return (invoke "㈖") (i32.const 273))
+(assert_return (invoke "㈗") (i32.const 274))
+(assert_return (invoke "㈘") (i32.const 275))
+(assert_return (invoke "㈙") (i32.const 276))
+(assert_return (invoke "㈚") (i32.const 277))
+(assert_return (invoke "㈛") (i32.const 278))
+(assert_return (invoke "㉮") (i32.const 279))
+(assert_return (invoke "㉯") (i32.const 280))
+(assert_return (invoke "㉰") (i32.const 281))
+(assert_return (invoke "㉱") (i32.const 282))
+(assert_return (invoke "㉲") (i32.const 283))
+(assert_return (invoke "㉳") (i32.const 284))
+(assert_return (invoke "㉴") (i32.const 285))
+(assert_return (invoke "㉵") (i32.const 286))
+(assert_return (invoke "㉶") (i32.const 287))
+(assert_return (invoke "㉷") (i32.const 288))
+(assert_return (invoke "㉸") (i32.const 289))
+(assert_return (invoke "㉹") (i32.const 290))
+(assert_return (invoke "㉺") (i32.const 291))
+(assert_return (invoke "㉻") (i32.const 292))
+(assert_return (invoke "㋐") (i32.const 293))
+(assert_return (invoke "ꀊ") (i32.const 294))
+(assert_return (invoke "ꓮ") (i32.const 295))
+(assert_return (invoke "ꕉ") (i32.const 296))
+(assert_return (invoke "ꚠ") (i32.const 297))
+(assert_return (invoke "ꠀ") (i32.const 298))
+(assert_return (invoke "ꠣ") (i32.const 299))
+(assert_return (invoke "ꡝ") (i32.const 300))
+(assert_return (invoke "ꢂ") (i32.const 301))
+(assert_return (invoke "꣪") (i32.const 302))
+(assert_return (invoke "ꤢ") (i32.const 303))
+(assert_return (invoke "ꥆ") (i32.const 304))
+(assert_return (invoke "ꦄ") (i32.const 305))
+(assert_return (invoke "ꨀ") (i32.const 306))
+(assert_return (invoke "ア") (i32.const 307))
+(assert_return (invoke "ᅡ") (i32.const 308))
+(assert_return (invoke "𐀀") (i32.const 309))
+(assert_return (invoke "𐊀") (i32.const 310))
+(assert_return (invoke "𐊠") (i32.const 311))
+(assert_return (invoke "𐌀") (i32.const 312))
+(assert_return (invoke "𐎠") (i32.const 313))
+(assert_return (invoke "𐒖") (i32.const 314))
+(assert_return (invoke "𐔀") (i32.const 315))
+(assert_return (invoke "𐝀") (i32.const 316))
+(assert_return (invoke "𐠀") (i32.const 317))
+(assert_return (invoke "𐤠") (i32.const 318))
+(assert_return (invoke "𐦀") (i32.const 319))
+(assert_return (invoke "𐦠") (i32.const 320))
+(assert_return (invoke "𐨀") (i32.const 321))
+(assert_return (invoke "𐬀") (i32.const 322))
+(assert_return (invoke "𐰀") (i32.const 323))
+(assert_return (invoke "𐰁") (i32.const 324))
+(assert_return (invoke "𐲀") (i32.const 325))
+(assert_return (invoke "𑀅") (i32.const 326))
+(assert_return (invoke "𑂃") (i32.const 327))
+(assert_return (invoke "𑄧") (i32.const 328))
+(assert_return (invoke "𑅐") (i32.const 329))
+(assert_return (invoke "𑆃") (i32.const 330))
+(assert_return (invoke "𑈀") (i32.const 331))
+(assert_return (invoke "𑊀") (i32.const 332))
+(assert_return (invoke "𑊰") (i32.const 333))
+(assert_return (invoke "𑌅") (i32.const 334))
+(assert_return (invoke "𑍰") (i32.const 335))
+(assert_return (invoke "𑐀") (i32.const 336))
+(assert_return (invoke "𑒁") (i32.const 337))
+(assert_return (invoke "𑖀") (i32.const 338))
+(assert_return (invoke "𑘀") (i32.const 339))
+(assert_return (invoke "𑚀") (i32.const 340))
+(assert_return (invoke "𑜒") (i32.const 341))
+(assert_return (invoke "𑜠") (i32.const 342))
+(assert_return (invoke "𑢡") (i32.const 343))
+(assert_return (invoke "𑫕") (i32.const 344))
+(assert_return (invoke "𑰀") (i32.const 345))
+(assert_return (invoke "𑲏") (i32.const 346))
+(assert_return (invoke "𑲯") (i32.const 347))
+(assert_return (invoke "𒀀") (i32.const 348))
+(assert_return (invoke "𖧕") (i32.const 349))
+(assert_return (invoke "𖩆") (i32.const 350))
+(assert_return (invoke "𖫧") (i32.const 351))
+(assert_return (invoke "𖽔") (i32.const 352))
+(assert_return (invoke "𛱁") (i32.const 353))
+(assert_return (invoke "𛱤") (i32.const 354))
+(assert_return (invoke "𞠣") (i32.const 355))
+(assert_return (invoke "🇦") (i32.const 356))
+(assert_return (invoke "Ɑ") (i32.const 357))
+(assert_return (invoke "Λ") (i32.const 358))
+(assert_return (invoke "Ɒ") (i32.const 359))
+(assert_return (invoke "ª") (i32.const 360))
+(assert_return (invoke "∀") (i32.const 361))
+(assert_return (invoke "₳") (i32.const 362))
+(assert_return (invoke "𐤀") (i32.const 363))
+(assert_return (invoke "Ⲁ") (i32.const 364))
+(assert_return (invoke "𐌰") (i32.const 365))
+(assert_return (invoke "Ά") (i32.const 366))
+(assert_return (invoke "Α") (i32.const 367))
+(assert_return (invoke "Ἀ") (i32.const 368))
+(assert_return (invoke "Ἁ") (i32.const 369))
+(assert_return (invoke "Ἂ") (i32.const 370))
+(assert_return (invoke "Ἃ") (i32.const 371))
+(assert_return (invoke "Ἄ") (i32.const 372))
+(assert_return (invoke "Ἅ") (i32.const 373))
+(assert_return (invoke "Ἆ") (i32.const 374))
+(assert_return (invoke "Ἇ") (i32.const 375))
+(assert_return (invoke "ᾈ") (i32.const 376))
+(assert_return (invoke "ᾉ") (i32.const 377))
+(assert_return (invoke "ᾊ") (i32.const 378))
+(assert_return (invoke "ᾋ") (i32.const 379))
+(assert_return (invoke "ᾌ") (i32.const 380))
+(assert_return (invoke "ᾍ") (i32.const 381))
+(assert_return (invoke "ᾎ") (i32.const 382))
+(assert_return (invoke "ᾏ") (i32.const 383))
+(assert_return (invoke "Ᾰ") (i32.const 384))
+(assert_return (invoke "Ᾱ") (i32.const 385))
+(assert_return (invoke "Ὰ") (i32.const 386))
+(assert_return (invoke "Ά") (i32.const 387))
+(assert_return (invoke "ᾼ") (i32.const 388))
+(assert_return (invoke "𝚨") (i32.const 389))
+(assert_return (invoke "𝛢") (i32.const 390))
+(assert_return (invoke "𝜜") (i32.const 391))
+(assert_return (invoke "𝝖") (i32.const 392))
+(assert_return (invoke "𝞐") (i32.const 393))
+(assert_return (invoke "⍶") (i32.const 394))
+(assert_return (invoke "⍺") (i32.const 395))
+(assert_return (invoke "⩜") (i32.const 396))
+(assert_return (invoke "ᗅ") (i32.const 397))
+(assert_return (invoke "Ꭺ") (i32.const 398))
+(assert_return (invoke ")˺˼𔗏𝅴𝅶𝅸𝅺⁾₎❩❫⟯﴿︶﹚)⦆󠀩❳❵⟧⟩⟫⟭⦈⦊⦖⸣⸥︘︸︺︼︾﹀﹂﹄﹈﹜﹞]}」󠁝󠁽»’”›❯") (i32.const 399))
+(assert_return (invoke "(˹˻𔗎𝅳𝅵𝅷𝅹⁽₍❨❪⟮﴾︵﹙(⦅󠀨❲❴⟦⟨⟪⟬⦇⦉⦕⸢⸤︗︷︹︻︽︿﹁﹃﹇﹛﹝[{「󠁛󠁻«‘“‹❮") (i32.const 400))
+(assert_return (invoke "𝪋𝪤") (i32.const 401))
+(assert_return (invoke "𝪋") (i32.const 402))
+(assert_return (invoke "½") (i32.const 403))
+(assert_return (invoke "1⁄2") (i32.const 404))
+(assert_return (invoke "1/2") (i32.const 405))
+(assert_return (invoke "୳") (i32.const 406))
+(assert_return (invoke "൴") (i32.const 407))
+(assert_return (invoke "⳽") (i32.const 408))
+(assert_return (invoke "꠱") (i32.const 409))
+(assert_return (invoke "𐅁") (i32.const 410))
+(assert_return (invoke "𐅵") (i32.const 411))
+(assert_return (invoke "𐅶") (i32.const 412))
+(assert_return (invoke "𐦽") (i32.const 413))
+(assert_return (invoke "𐹻") (i32.const 414))
+(assert_return (invoke """) (i32.const 415))
+(assert_return (invoke "\7f") (i32.const 416))
+(assert_return (invoke "\08") (i32.const 417))
+(assert_return (invoke "⌫") (i32.const 418))
+(assert_return (invoke "⌦") (i32.const 419))
+(assert_return (invoke "␈") (i32.const 420))
+(assert_return (invoke "␡") (i32.const 421))
+(assert_return (invoke "᷻") (i32.const 422))
+(assert_return (invoke "\0f") (i32.const 423))
+(assert_return (invoke "←") (i32.const 424))
+(assert_return (invoke "⌧") (i32.const 425))
+(assert_return (invoke "⍒") (i32.const 426))
+(assert_return (invoke "⍔") (i32.const 427))
+(assert_return (invoke "⍢") (i32.const 428))
+(assert_return (invoke "⍫") (i32.const 429))
+(assert_return (invoke "\1a") (i32.const 430))
+(assert_return (invoke "␦") (i32.const 431))
+(assert_return (invoke "␚") (i32.const 432))
+(assert_return (invoke "") (i32.const 433))
+(assert_return (invoke "?") (i32.const 434))
+(assert_return (invoke "¿") (i32.const 435))
+(assert_return (invoke "᥅") (i32.const 436))
+(assert_return (invoke ";") (i32.const 437))
+(assert_return (invoke "՞") (i32.const 438))
+(assert_return (invoke "؟") (i32.const 439))
+(assert_return (invoke "፧") (i32.const 440))
+(assert_return (invoke "⁇") (i32.const 441))
+(assert_return (invoke "⍰") (i32.const 442))
+(assert_return (invoke "❓") (i32.const 443))
+(assert_return (invoke "❔") (i32.const 444))
+(assert_return (invoke "⳺") (i32.const 445))
+(assert_return (invoke "⳻") (i32.const 446))
+(assert_return (invoke "⸮") (i32.const 447))
+(assert_return (invoke "㉄") (i32.const 448))
+(assert_return (invoke "꘏") (i32.const 449))
+(assert_return (invoke "꛷") (i32.const 450))
+(assert_return (invoke "︖") (i32.const 451))
+(assert_return (invoke "﹖") (i32.const 452))
+(assert_return (invoke "?") (i32.const 453))
+(assert_return (invoke "𑅃") (i32.const 454))
+(assert_return (invoke "𞥟") (i32.const 455))
+(assert_return (invoke "󠀿") (i32.const 456))
+(assert_return (invoke "𖡄") (i32.const 457))
+(assert_return (invoke "⯑") (i32.const 458))
+(assert_return (invoke "¶") (i32.const 459))
+(assert_return (invoke "⁋") (i32.const 460))
+(assert_return (invoke "܀") (i32.const 461))
+(assert_return (invoke "჻") (i32.const 462))
+(assert_return (invoke "፨") (i32.const 463))
+(assert_return (invoke "〷") (i32.const 464))
+(assert_return (invoke "❡") (i32.const 465))
+(assert_return (invoke "⸏") (i32.const 466))
+(assert_return (invoke "⸐") (i32.const 467))
+(assert_return (invoke "⸑") (i32.const 468))
+(assert_return (invoke "⸎") (i32.const 469))
+(assert_return (invoke "\14") (i32.const 470))
+(assert_return (invoke "☙") (i32.const 471))
+(assert_return (invoke "⸿") (i32.const 472))
+(assert_return (invoke "〇") (i32.const 473))
+(assert_return (invoke "๛") (i32.const 474))
+(assert_return (invoke "ꙮ") (i32.const 475))
+(assert_return (invoke "ϓ") (i32.const 476))
+(assert_return (invoke "ϔ") (i32.const 477))
+(assert_return (invoke "ẛ") (i32.const 478))
+
+(module
+ ;; Test that we can use indices instead of names to reference imports,
+ ;; exports, functions and parameters.
+ (import "spectest" "print_i32" (func (param i32)))
+ (func (import "spectest" "print_i32") (param i32))
+ (func (param i32) (param i32)
+ (call 0 (local.get 0))
+ (call 1 (local.get 1))
+ )
+ (export "print32" (func 2))
+)
+
+(assert_return (invoke "print32" (i32.const 42) (i32.const 123)))