From 9b565bf76524d1c4f3a889b147e73e9072d36773 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Fri, 22 Apr 2022 02:31:16 +0300 Subject: [PATCH] cgen: fix enum switch bug in translated code --- vlib/v/gen/c/cgen.v | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index f3f740dcdd..1468a135f8 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -5185,11 +5185,13 @@ fn (mut g Gen) enum_val(node ast.EnumVal) { // g.write('${it.mod}${it.enum_name}_$it.val') // g.enum_expr(node) styp := g.typ(g.table.unaliased_type(node.typ)) - if node.typ.is_number() { + // && g.inside_switch + if g.pref.translated && node.typ.is_number() { // Mostly in translated code, when C enums are used as ints in switches - // g.write('/*enum val is_number $node.mod styp=$styp*/') + g.write('/*enum val is_number $node.mod styp=$styp*/_const_main__$node.val') + } else { + g.write('${styp}__$node.val') } - g.write('${styp}__$node.val') } fn (mut g Gen) as_cast(node ast.AsCast) {