enum Foo { zero first = 1 third = 3 fourth } const enum_size = i32(Foo.third) fn test_enum_val_as_fixed_array_size() { arr1 := [int(Foo.first)]int{} assert arr1 == [0]! // TODO: check why it fails on MSVC $if !msvc { arr2 := [enum_size]int{} assert arr2 == [0, 0, 0]! } arr3 := [int(Foo.fourth)]int{} assert arr3 == [0, 0, 0, 0]! } fn test_for_in_array_named_array() { mut array := [1] for elem in array { assert elem == 1 } for mut elem in array { assert *elem == 1 elem = 2 assert *elem == 2 } } fn test_for_in_shared_array_named_array() { shared array := &[1] rlock array { for elem in array { assert elem == 1 } } } fn test_fixed_array_to_dynamic_array() { y := [1, 2, 3]! mut x := unsafe { y[..] } x << 4 assert x.len == 4 } fn test_append_array_used_as_fn_param() { mut arr1 := [][]string{} mut arr2 := [][]string{} mut arr3 := []string{} arr4 := []string{} arr1 << arr2 arr1 << arr3 arr3 << arr4 append_2d_2d(mut arr1, arr2) append_2d_1d(mut arr1, arr3) append_1d_1d(mut arr3, arr4) assert true } fn append_2d_2d(mut arr1 [][]string, arr2 [][]string) { arr1 << arr2 } fn append_2d_1d(mut arr1 [][]string, arr2 []string) { arr1 << arr2 } fn append_1d_1d(mut arr1 []string, arr2 []string) { arr1 << arr2 }