diff options
| author | gingerBill <bill@gingerbill.org> | 2024-09-11 23:08:38 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2024-09-11 23:08:38 +0100 |
| commit | 27ed10746db72fd3e5ba9aea922cb064aa3f8995 (patch) | |
| tree | d18c257e0b2a896cbbbbc5840f0c83ea9f066d32 /src/check_expr.cpp | |
| parent | 3b22c0854c0a64ae27ca43f59b5f6cdffcae56ab (diff) | |
Allow `transmute(Bit_Set)~T(0)`
Diffstat (limited to 'src/check_expr.cpp')
| -rw-r--r-- | src/check_expr.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 45c3e9a3c..760551a72 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -3612,7 +3612,8 @@ gb_internal bool check_transmute(CheckerContext *c, Ast *node, Operand *o, Type if (are_types_identical(src_bt, dst_bt)) { return true; } - if (is_type_integer(src_t) && is_type_integer(dst_t)) { + if ((is_type_integer(src_t) && is_type_integer(dst_t)) || + is_type_integer(src_t) && is_type_bit_set(dst_t)) { if (types_have_same_internal_endian(src_t, dst_t)) { ExactValue src_v = exact_value_to_integer(o->value); GB_ASSERT(src_v.kind == ExactValue_Integer || src_v.kind == ExactValue_Invalid); |