diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2026-01-26 15:51:38 +0000 |
|---|---|---|
| committer | gingerBill <gingerBill@users.noreply.github.com> | 2026-01-26 15:51:38 +0000 |
| commit | 0774b7465fe0eb29c54af24e0375f80b776f42f6 (patch) | |
| tree | 9f2f734f5e99cfd0f22552eaea83a61a29405849 | |
| parent | efdb89afcb893d9b405d517d00331082fcc849df (diff) | |
Allow for shortcut to get feature flags from the expression directly assuming it as a filebill/force-type-assert
| -rw-r--r-- | src/llvm_backend_expr.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index c925ba2c9..3c7092a32 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -282,10 +282,16 @@ gb_internal lbValue lb_emit_unary_arith(lbProcedure *p, TokenKind op, lbValue x, return res; } -gb_internal u64 lb_get_file_feature_flags(lbProcedure *p) { +gb_internal u64 lb_get_file_feature_flags(lbProcedure *p, Ast *expr = nullptr) { AstFile *file = nullptr; - if (p->body && p->body->file()) { + if (expr != nullptr) { + file = expr->file(); + } + + if (file != nullptr) { + // it is now set + } else if (p->body && p->body->file()) { file = p->body->file(); } else if (p->type_expr && p->type_expr->file()) { file = p->type_expr->file(); @@ -3812,7 +3818,7 @@ gb_internal lbValue lb_build_unary_and(lbProcedure *p, Ast *expr) { bool do_type_check = true; if (build_context.no_type_assert) { - u64 feature_flags = lb_get_file_feature_flags(p); + u64 feature_flags = lb_get_file_feature_flags(p, ue_expr); if ((feature_flags & OptInFeatureFlag_ForceTypeAssert) == 0) { do_type_check = false; } |