summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-validator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm/wasm-validator.cpp')
-rw-r--r--src/wasm/wasm-validator.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/wasm/wasm-validator.cpp b/src/wasm/wasm-validator.cpp
index d745585e5..4bb556160 100644
--- a/src/wasm/wasm-validator.cpp
+++ b/src/wasm/wasm-validator.cpp
@@ -487,6 +487,7 @@ public:
void visitStringIterMove(StringIterMove* curr);
void visitStringSliceWTF(StringSliceWTF* curr);
void visitStringSliceIter(StringSliceIter* curr);
+ void visitContBind(ContBind* curr);
void visitContNew(ContNew* curr);
void visitResume(Resume* curr);
@@ -3295,6 +3296,24 @@ void FunctionValidator::visitStringSliceIter(StringSliceIter* curr) {
"string operations require reference-types [--enable-strings]");
}
+void FunctionValidator::visitContBind(ContBind* curr) {
+ // TODO implement actual type-checking
+ shouldBeTrue(
+ !getModule() || getModule()->features.hasTypedContinuations(),
+ curr,
+ "cont.bind requires typed-continuatons [--enable-typed-continuations]");
+
+ shouldBeTrue((curr->contTypeBefore.isContinuation() &&
+ curr->contTypeBefore.getContinuation().type.isSignature()),
+ curr,
+ "invalid first type in ContBind expression");
+
+ shouldBeTrue((curr->contTypeAfter.isContinuation() &&
+ curr->contTypeAfter.getContinuation().type.isSignature()),
+ curr,
+ "invalid second type in ContBind expression");
+}
+
void FunctionValidator::visitContNew(ContNew* curr) {
// TODO implement actual type-checking
shouldBeTrue(