aboutsummaryrefslogtreecommitdiff
path: root/core/fmt
diff options
context:
space:
mode:
authorBarinzaya <barinzaya@gmail.com>2025-04-07 15:41:21 -0400
committerBarinzaya <barinzaya@gmail.com>2025-04-07 15:41:21 -0400
commit92ac86ae3ca079d0485ed8b56fa45441b6c91356 (patch)
tree2bc8fd51a5d8c882f0e81538755916140d238d9a /core/fmt
parent2b26c0b39ee851509eaa29eb074fcfd0df242201 (diff)
Fixed `fmt` handling of `bit_set[Enum]` when `min(Enum) != 0`.
The lower bound of the `bit_set` was only being applied *after* searching for a matching enum value, so values wouldn't line up if the minimum value of the enum wasn't 0.
Diffstat (limited to 'core/fmt')
-rw-r--r--core/fmt/fmt.odin10
1 files changed, 3 insertions, 7 deletions
diff --git a/core/fmt/fmt.odin b/core/fmt/fmt.odin
index 826a21ee9..f42ab700a 100644
--- a/core/fmt/fmt.odin
+++ b/core/fmt/fmt.odin
@@ -1802,11 +1802,8 @@ fmt_bit_set :: proc(fi: ^Info, v: any, name: string = "", verb: rune = 'v') {
e, is_enum := et.variant.(runtime.Type_Info_Enum)
commas := 0
- loop: for i in 0 ..< bit_size {
- if bits & (1<<i) == 0 {
- continue loop
- }
-
+ loop: for i in transmute(bit_set[0..<128])bits {
+ i := i64(i) + info.lower
if commas > 0 {
io.write_string(fi.writer, ", ", &fi.n)
}
@@ -1829,8 +1826,7 @@ fmt_bit_set :: proc(fi: ^Info, v: any, name: string = "", verb: rune = 'v') {
}
}
}
- v := i64(i) + info.lower
- io.write_i64(fi.writer, v, 10, &fi.n)
+ io.write_i64(fi.writer, i, 10, &fi.n)
commas += 1
}
}