diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/wasm/wasm-s-parser.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp index ee9fdde72..507cf3b6c 100644 --- a/src/wasm/wasm-s-parser.cpp +++ b/src/wasm/wasm-s-parser.cpp @@ -2945,7 +2945,11 @@ Expression* SExpressionWasmBuilder::makeArrayCopy(Element& s) { } Expression* SExpressionWasmBuilder::makeRefAs(Element& s, RefAsOp op) { - return Builder(wasm).makeRefAs(op, parseExpression(s[1])); + auto* value = parseExpression(s[1]); + if (!value->type.isRef() && value->type != Type::unreachable) { + throw ParseException("ref.as child must be a ref", s.line, s.col); + } + return Builder(wasm).makeRefAs(op, value); } Expression* SExpressionWasmBuilder::makeStringNew(Element& s, StringNewOp op) { |