v2 / vlib / v / checker / tests / array_init_without_init_value_err.vv
57 lines · 46 sloc · 873 bytes · 2dce525d90ca36715367ad565916961c088cef25
Raw
1// test sum_types uninitialized.
2type Foo = int | string
3
4fn main_sum_type() {
5 a := []Foo{len: 10}
6 println(a)
7 fixed_a := [10]Foo{}
8 println(fixed_a)
9}
10
11fn main_sum_type_2[T]() {
12 a := []T{len: 10}
13 println(a)
14 fixed_a := [10]T{}
15 println(fixed_a)
16}
17
18// test references uninitialized.
19fn main_ref() {
20 println(*[]&int{len: 1}[0])
21 println([1]&int{})
22 _ = [][1]&int{len: 1}[0][0]
23 _ = []map[int]&int{len: 1}
24}
25
26// test interfaces uninitialized.
27interface MObject {
28 give_string() string
29}
30
31struct LeStruct {
32 le_string string
33}
34
35fn (a LeStruct) give_string() string {
36 return 'V'
37}
38
39fn main_interface() {
40 mut parsed_lines := []MObject{len: 9}
41 println(parsed_lines)
42}
43
44fn main_interface_2[T]() {
45 mut parsed_lines := []T{len: 9}
46 println(parsed_lines)
47}
48
49fn main() {
50 main_sum_type()
51 main_sum_type_2[Foo]()
52
53 main_ref()
54
55 main_interface()
56 main_interface_2[MObject]()
57}
58