From 37a79624fc504321b3671b2909b63bb19df77ccc Mon Sep 17 00:00:00 2001 From: Delyan Angelov Date: Thu, 23 Mar 2023 19:18:25 +0200 Subject: [PATCH] cgen: fix `println(value.name)` inside `$for value in Test.values{` (#17746) --- vlib/v/gen/c/cgen.v | 7 ------- vlib/v/tests/comptime_enum_test.v | 21 ++++++++++++++++++++- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index f999dd7a70..6f8241d492 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -3427,13 +3427,6 @@ fn (mut g Gen) selector_expr(node ast.SelectorExpr) { g.error('unknown generic field', node.pos) } } - } else { - // for comp-time enum value evaluation - if node.expr_type == g.enum_data_type && node.expr is ast.Ident - && (node.expr as ast.Ident).name == 'value' { - g.write(node.str()) - return - } } if node.expr_type == 0 { g.checker_bug('unexpected SelectorExpr.expr_type = 0', node.pos) diff --git a/vlib/v/tests/comptime_enum_test.v b/vlib/v/tests/comptime_enum_test.v index 6474275e04..0d42a6e582 100644 --- a/vlib/v/tests/comptime_enum_test.v +++ b/vlib/v/tests/comptime_enum_test.v @@ -3,7 +3,26 @@ enum Test { bar } -fn test_main() { +fn test_print_value_name() { + $for value in Test.values { + println(value.name) + } +} + +fn test_print_value_value() { + $for value in Test.values { + println(value.value) + } +} + +fn test_print_both() { + $for values in Test.values { + println(values.name) + println(values.value) + } +} + +fn test_comptime_for_in_enum_values() { $for item in Test.values { assert item.name in ['foo', 'bar'] match item.value {