From 76ea9cc083d85a0b5db335fac5c1ff70405e39e8 Mon Sep 17 00:00:00 2001 From: dimgigov Date: Tue, 28 Jul 2026 20:33:21 +0300 Subject: [PATCH] feat(selfhost-sema): arithmetic errors return tyUnknown sentinel --- _test_error_recovery/bux.toml | 7 +++++++ _test_error_recovery/src/Main.bux | 5 +++++ src/sema.bux | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 _test_error_recovery/bux.toml create mode 100644 _test_error_recovery/src/Main.bux diff --git a/_test_error_recovery/bux.toml b/_test_error_recovery/bux.toml new file mode 100644 index 0000000..22d5c36 --- /dev/null +++ b/_test_error_recovery/bux.toml @@ -0,0 +1,7 @@ +[Package] +Name = "error_recovery" +Version = "0.1.0" +Type = "bin" + +[Build] +Output = "Bin" diff --git a/_test_error_recovery/src/Main.bux b/_test_error_recovery/src/Main.bux new file mode 100644 index 0000000..71bc41a --- /dev/null +++ b/_test_error_recovery/src/Main.bux @@ -0,0 +1,5 @@ +func Main() -> int { + let bad: int = "a" + 1; + let z: int = undefined_variable; + return 0; +} diff --git a/src/sema.bux b/src/sema.bux index c096417..fd6f04e 100644 --- a/src/sema.bux +++ b/src/sema.bux @@ -966,7 +966,7 @@ module Sema { if op == tkAmpAmp || op == tkPipePipe || op == tkBang { return tyBool; } // Arithmetic returns wider type if !Sema_IsNumeric(left) || !Sema_IsNumeric(right) { - Sema_EmitError(sema, expr.line, expr.column, "arithmetic requires numeric operands"); + return Sema_EmitExprError(sema, expr, "arithmetic requires numeric operands"); } if left == tyFloat64 || right == tyFloat64 { return tyFloat64; } return tyInt;