summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/type-checker.cc6
-rw-r--r--test/regress/regress-10.txt13
2 files changed, 15 insertions, 4 deletions
diff --git a/src/type-checker.cc b/src/type-checker.cc
index 72b86cb4..7c14b6db 100644
--- a/src/type-checker.cc
+++ b/src/type-checker.cc
@@ -528,10 +528,8 @@ Result TypeChecker::OnTryBlock(const TypeVector* sig) {
Result TypeChecker::OnTeeLocal(Type type) {
Result result = Result::Ok;
- Type value = Type::Any;
- COMBINE_RESULT(result, CheckTypeStackLimit(1, "tee_local"));
- COMBINE_RESULT(result, TopType(&value));
- COMBINE_RESULT(result, CheckType(value, type, "tee_local"));
+ COMBINE_RESULT(result, PopAndCheck1Type(type, "tee_local"));
+ PushType(type);
return result;
}
diff --git a/test/regress/regress-10.txt b/test/regress/regress-10.txt
new file mode 100644
index 00000000..299f73a9
--- /dev/null
+++ b/test/regress/regress-10.txt
@@ -0,0 +1,13 @@
+;;; ERROR: 1
+(module
+ (func
+ (local i32)
+ block
+ unreachable
+ tee_local 0
+ end))
+(;; STDERR ;;;
+out/test/regress/regress-10.txt:7:7: error: type stack at end of block is 1, expected 0
+ tee_local 0
+ ^^^^^^^^^^^
+;;; STDERR ;;)