diff options
Diffstat (limited to 'src/wasm/wasm-s-parser.cpp')
-rw-r--r-- | src/wasm/wasm-s-parser.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp index 0519afd83..4fa4981e4 100644 --- a/src/wasm/wasm-s-parser.cpp +++ b/src/wasm/wasm-s-parser.cpp @@ -2822,6 +2822,13 @@ Expression* SExpressionWasmBuilder::makeCallRef(Element& s, bool isReturn) { s.line, s.col); } + if (!Type::isSubType(target->type, Type(sigType, Nullable))) { + throw ParseException( + std::string(isReturn ? "return_call_ref" : "call_ref") + + " target should match expected type", + s.line, + s.col); + } return Builder(wasm).makeCallRef( target, operands, sigType.getSignature().results, isReturn); } |