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;