From 3eac8b42f83cf25c556237d3c4c594992465bcb0 Mon Sep 17 00:00:00 2001 From: kbkpbot Date: Thu, 4 Jul 2024 18:23:27 +0800 Subject: [PATCH] cgen: fix const name without main prefix in `-translated` mode (#21789) --- vlib/v/gen/c/cgen.v | 7 +++++++ vlib/v/gen/c/testdata/translated_const_fixed_array.out | 1 + vlib/v/gen/c/testdata/translated_const_fixed_array.vv | 10 ++++++++++ vlib/v/tests/translated_test.v | 6 ++++++ 4 files changed, 24 insertions(+) create mode 100644 vlib/v/gen/c/testdata/translated_const_fixed_array.out create mode 100644 vlib/v/gen/c/testdata/translated_const_fixed_array.vv diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index 6fb24bd1f..4f21095dc 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -5835,6 +5835,13 @@ fn (mut g Gen) const_decl(node ast.ConstDecl) { } name := c_name(field.name) mut const_name := '_const_' + name + if g.pref.translated && !g.is_builtin_mod + && !util.module_is_builtin(field.name.all_before_last('.')) { + mut x := util.no_dots(field.name) + if x.starts_with('main__') { + const_name = x['main__'.len..] + } + } if !g.is_builtin_mod { if cattr := node.attrs.find_first('export') { const_name = cattr.arg diff --git a/vlib/v/gen/c/testdata/translated_const_fixed_array.out b/vlib/v/gen/c/testdata/translated_const_fixed_array.out new file mode 100644 index 000000000..9766475a4 --- /dev/null +++ b/vlib/v/gen/c/testdata/translated_const_fixed_array.out @@ -0,0 +1 @@ +ok diff --git a/vlib/v/gen/c/testdata/translated_const_fixed_array.vv b/vlib/v/gen/c/testdata/translated_const_fixed_array.vv new file mode 100644 index 000000000..704689174 --- /dev/null +++ b/vlib/v/gen/c/testdata/translated_const_fixed_array.vv @@ -0,0 +1,10 @@ +// vtest vflags: -translated +@[translated] +module main + +const ssf = [1, 2, 3]! + +fn main() { + assert ssf[0] == 1 + println('ok') +} diff --git a/vlib/v/tests/translated_test.v b/vlib/v/tests/translated_test.v index a8f2b05dd..78380506f 100644 --- a/vlib/v/tests/translated_test.v +++ b/vlib/v/tests/translated_test.v @@ -6,3 +6,9 @@ fn test_NotSnakeCaseFunction() { assert 8 == 2 * 4 assert 2 * 3 == 6 } + +const ssf = [1, 2, 3]! + +fn test_const_name_without_main_prefix() { + assert ssf[0] == 1 +} -- 2.39.5