diff --git a/vlib/builtin/fixed_array_reverse_test.v b/vlib/builtin/fixed_array_reverse_test.v index 9b6c46a36f..0a34f5a3fa 100644 --- a/vlib/builtin/fixed_array_reverse_test.v +++ b/vlib/builtin/fixed_array_reverse_test.v @@ -27,11 +27,13 @@ fn test_fixed_array_reverse() { b := a.reverse() assert a == ['hi', '1', '5', '3']! assert b == ['3', '5', '1', 'hi']! + assert ['hi', '1', '5', '3']!.reverse() == ['3', '5', '1', 'hi']! mut nums := [67, -3, 108, 42, 7]! n := nums.reverse() assert nums == [67, -3, 108, 42, 7]! assert n == [7, 42, 108, -3, 67]! + assert [67, -3, 108, 42, 7]!.reverse() == [7, 42, 108, -3, 67]! mut users := [User{22, 'Peter'}, User{20, 'Bob'}, User{25, 'Alice'}]! u := users.reverse() @@ -49,4 +51,12 @@ fn test_fixed_array_reverse() { assert u[0].name == 'Alice' assert u[1].name == 'Bob' assert u[2].name == 'Peter' + + u2 := [User{22, 'Peter'}, User{20, 'Bob'}, User{25, 'Alice'}]!.reverse() + assert u2[0].age == 25 + assert u2[1].age == 20 + assert u2[2].age == 22 + assert u2[0].name == 'Alice' + assert u2[1].name == 'Bob' + assert u2[2].name == 'Peter' } diff --git a/vlib/v/gen/c/array.v b/vlib/v/gen/c/array.v index a411564cf8..04c5db1657 100644 --- a/vlib/v/gen/c/array.v +++ b/vlib/v/gen/c/array.v @@ -833,7 +833,11 @@ fn (mut g Gen) gen_fixed_array_reverse(node ast.CallExpr) { atype := g.styp(node.return_type) g.writeln('${atype} ${past.tmp_var};') g.write('memcpy(&${past.tmp_var}, &') - g.expr(node.left) + if node.left is ast.ArrayInit { + g.fixed_array_init_with_cast(node.left, node.left_type) + } else { + g.expr(node.left) + } g.writeln(', sizeof(${atype}));') unsafe {