Skip to content

Commit c01186c

Browse files
authored
cgen: fix enum with comptime const value (fix #22386) (#22388)
1 parent cf2ccbc commit c01186c

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

vlib/v/gen/c/cgen.v

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4406,6 +4406,8 @@ fn (mut g Gen) enum_decl(node ast.EnumDecl) {
44064406
const_def := g.global_const_defs[util.no_dots(field.expr.name)]
44074407
if const_def.def.starts_with('#define') {
44084408
g.enum_typedefs.write_string(const_def.def.all_after_last(' '))
4409+
} else if const_def.def.contains('const') {
4410+
g.enum_typedefs.write_string(const_def.def.all_after_last('=').all_before_last(';'))
44094411
} else {
44104412
g.enum_typedefs.write_string(expr_str)
44114413
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const enum_value = $if linux { 1 } $else { 2 }
2+
3+
pub enum Test {
4+
a = enum_value
5+
}
6+
7+
fn test_enum_with_comptime_const() {
8+
println(Test.a)
9+
assert true
10+
}

0 commit comments

Comments
 (0)