diff --git a/vlib/v/fmt/fmt.v b/vlib/v/fmt/fmt.v index 4618fe6cb2..8a562269ab 100644 --- a/vlib/v/fmt/fmt.v +++ b/vlib/v/fmt/fmt.v @@ -1976,11 +1976,12 @@ fn (mut f Fmt) write_generic_call_if_require(node ast.CallExpr) { } pub fn (mut f Fmt) call_args(args []ast.CallArg) { - f.single_line_fields = true + old_single_line_fields_state := f.single_line_fields old_short_arg_state := f.use_short_fn_args + f.single_line_fields = true f.use_short_fn_args = false defer { - f.single_line_fields = false + f.single_line_fields = old_single_line_fields_state f.use_short_fn_args = old_short_arg_state } for i, arg in args { diff --git a/vlib/v/fmt/tests/fn_call_with_call_expr_and_params_struct_args_keep.vv b/vlib/v/fmt/tests/fn_call_with_call_expr_and_params_struct_args_keep.vv new file mode 100644 index 0000000000..6cfd3cd099 --- /dev/null +++ b/vlib/v/fmt/tests/fn_call_with_call_expr_and_params_struct_args_keep.vv @@ -0,0 +1,10 @@ +[params] +struct Bar { + bar bool +} + +fn foo(msg string, opts Bar) { + println(msg) +} + +foo(123.str(), bar: true)