diff options
-rw-r--r-- | src/type-checker.cc | 6 | ||||
-rw-r--r-- | test/regress/regress-10.txt | 13 |
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 ;;) |