diff --git a/src/check_expr.cpp b/src/check_expr.cpp index fb7a98388..2c44890c2 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -6890,6 +6890,10 @@ ExprKind check_expr_base_internal(CheckerContext *c, Operand *o, Ast *node, Type if (c->curr_proc_sig == nullptr) { error(node, "'%.*s' can only be used within a procedure", LIT(name)); } + + if (c->in_defer) { + error(rs->token, "'or_return' cannot be used within a defer statement"); + } return Expr_Expr; case_end;