diff options
author | Alon Zakai <azakai@google.com> | 2022-08-10 12:43:02 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-10 12:43:02 -0700 |
commit | fd0f8a894a0e760d79f2d5ff890dd5a536ae2540 (patch) | |
tree | 7d4a9e742f4b51250066ec602c12bc4f39602921 /src/wasm/wasm-s-parser.cpp | |
parent | 7d1985391571f3a913a47f4673843481ac46b067 (diff) | |
download | binaryen-fd0f8a894a0e760d79f2d5ff890dd5a536ae2540.tar.gz binaryen-fd0f8a894a0e760d79f2d5ff890dd5a536ae2540.tar.bz2 binaryen-fd0f8a894a0e760d79f2d5ff890dd5a536ae2540.zip |
[Strings] Fix string.new_wtf16_array (#4894)
Like the 8-bit array variants, it takes 3 parameters.
Diffstat (limited to 'src/wasm/wasm-s-parser.cpp')
-rw-r--r-- | src/wasm/wasm-s-parser.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp index c1285c647..382ca741d 100644 --- a/src/wasm/wasm-s-parser.cpp +++ b/src/wasm/wasm-s-parser.cpp @@ -2824,8 +2824,10 @@ Expression* SExpressionWasmBuilder::makeStringNew(Element& s, StringNewOp op) { throw ParseException("bad string.new op", s.line, s.col); } length = parseExpression(s[i + 1]); + return Builder(wasm).makeStringNew(op, parseExpression(s[i]), length); } else if (op == StringNewWTF16) { length = parseExpression(s[i + 1]); + return Builder(wasm).makeStringNew(op, parseExpression(s[i]), length); } else if (op == StringNewWTF8Array) { const char* str = s[i++]->c_str(); if (strncmp(str, "utf8", 4) == 0) { @@ -2840,8 +2842,13 @@ Expression* SExpressionWasmBuilder::makeStringNew(Element& s, StringNewOp op) { auto* start = parseExpression(s[i + 1]); auto* end = parseExpression(s[i + 2]); return Builder(wasm).makeStringNew(op, parseExpression(s[i]), start, end); + } else if (op == StringNewWTF16Array) { + auto* start = parseExpression(s[i + 1]); + auto* end = parseExpression(s[i + 2]); + return Builder(wasm).makeStringNew(op, parseExpression(s[i]), start, end); + } else { + throw ParseException("bad string.new op", s.line, s.col); } - return Builder(wasm).makeStringNew(op, parseExpression(s[i]), length); } Expression* SExpressionWasmBuilder::makeStringConst(Element& s) { @@ -2858,7 +2865,7 @@ Expression* SExpressionWasmBuilder::makeStringMeasure(Element& s, } else if (strncmp(str, "wtf8", 4) == 0) { op = StringMeasureWTF8; } else { - throw ParseException("bad string.new op", s.line, s.col); + throw ParseException("bad string.measure op", s.line, s.col); } } return Builder(wasm).makeStringMeasure(op, parseExpression(s[i])); |