summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/wasm/wasm-s-parser.cpp6
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) {