aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2026-01-26 15:51:38 +0000
committergingerBill <gingerBill@users.noreply.github.com>2026-01-26 15:51:38 +0000
commit0774b7465fe0eb29c54af24e0375f80b776f42f6 (patch)
tree9f2f734f5e99cfd0f22552eaea83a61a29405849
parentefdb89afcb893d9b405d517d00331082fcc849df (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.cpp12
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;
}