diff options
| author | Barinzaya <barinzaya@gmail.com> | 2025-04-07 15:41:21 -0400 |
|---|---|---|
| committer | Barinzaya <barinzaya@gmail.com> | 2025-04-07 15:41:21 -0400 |
| commit | 92ac86ae3ca079d0485ed8b56fa45441b6c91356 (patch) | |
| tree | 2bc8fd51a5d8c882f0e81538755916140d238d9a /core/fmt | |
| parent | 2b26c0b39ee851509eaa29eb074fcfd0df242201 (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.odin | 10 |
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 } } |