1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

cgen: fix println(value.name) inside $for value in Test.values{ (#17746)

This commit is contained in:
Delyan Angelov 2023-03-23 19:18:25 +02:00 committed by GitHub
parent 8693da4d36
commit 37a79624fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 8 deletions

View File

@ -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)

View File

@ -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 {