From: Brendan Hansen Date: Mon, 23 Aug 2021 00:00:58 +0000 (-0500) Subject: better printing for enum flags X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=3ae49326cda41c4dae172f6f2782e0a59233db8d;p=onyx.git better printing for enum flags --- diff --git a/core/conv.onyx b/core/conv.onyx index fba51cb1..acf53c87 100644 --- a/core/conv.onyx +++ b/core/conv.onyx @@ -577,7 +577,7 @@ str_format_va :: (format: str, buffer: [] u8, va: [] any) -> str { case #default do assert(false, "Bad enum backing type"); } - { + if !e.is_flags { for ^member: e.members { if value == member.value { output->write(member.name); @@ -586,6 +586,20 @@ str_format_va :: (format: str, buffer: [] u8, va: [] any) -> str { } output->write("UNKNOWN"); + + } else { + first := true; + for ^member: e.members { + if value & member.value != 0 { + if !first do output->write(" | "); + output->write(member.name); + first = false; + } + } + + if first { + output->write("None"); + } } } }