From d67251c1e066f13156cfd6e38730d822fa054717 Mon Sep 17 00:00:00 2001 From: yuyi Date: Mon, 25 Apr 2022 19:42:05 +0800 Subject: [PATCH] cgen: fix error for printing multi fixed array (#14141) --- vlib/v/gen/c/array.v | 2 +- vlib/v/gen/c/fn.v | 6 ++++++ vlib/v/tests/inout/printing_multi_fixed_array.out | 1 + vlib/v/tests/inout/printing_multi_fixed_array.vv | 4 ++++ 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 vlib/v/tests/inout/printing_multi_fixed_array.out create mode 100644 vlib/v/tests/inout/printing_multi_fixed_array.vv diff --git a/vlib/v/gen/c/array.v b/vlib/v/gen/c/array.v index 125a1495d7..fe072c5b44 100644 --- a/vlib/v/gen/c/array.v +++ b/vlib/v/gen/c/array.v @@ -78,7 +78,7 @@ fn (mut g Gen) array_init(node ast.ArrayInit) { g.inside_lambda = false return } - need_tmp_var := g.inside_call && !g.inside_struct_init + need_tmp_var := g.inside_call && !g.inside_struct_init && node.exprs.len == 0 mut stmt_str := '' mut tmp_var := '' if need_tmp_var { diff --git a/vlib/v/gen/c/fn.v b/vlib/v/gen/c/fn.v index b145b393a5..24a3babcbe 100644 --- a/vlib/v/gen/c/fn.v +++ b/vlib/v/gen/c/fn.v @@ -2044,6 +2044,12 @@ fn (mut g Gen) ref_or_deref_arg(arg ast.CallArg, expected_type ast.Type, lang as g.expr(arg.expr) g.write('->val') return + } else if arg.expr is ast.ArrayInit { + if arg.expr.is_fixed { + if !arg.expr.has_it { + g.write('(${g.typ(arg.expr.typ)})') + } + } } g.expr_with_cast(arg.expr, arg_typ, expected_type) if needs_closing { diff --git a/vlib/v/tests/inout/printing_multi_fixed_array.out b/vlib/v/tests/inout/printing_multi_fixed_array.out new file mode 100644 index 0000000000..7c3adbe375 --- /dev/null +++ b/vlib/v/tests/inout/printing_multi_fixed_array.out @@ -0,0 +1 @@ +[[1, 2], [3, 3]] diff --git a/vlib/v/tests/inout/printing_multi_fixed_array.vv b/vlib/v/tests/inout/printing_multi_fixed_array.vv new file mode 100644 index 0000000000..f8a284b058 --- /dev/null +++ b/vlib/v/tests/inout/printing_multi_fixed_array.vv @@ -0,0 +1,4 @@ +fn main() { + a := [[1, 2]!, [3, 3]!]! + println([[a[0][0], a[0][1]]!, [a[1][0], a[1][1]]!]!) +}