v2 / vlib / v / tests / fns / call_on_anon_test.v
55 lines · 49 sloc · 1019 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1fn f1(s string) fn (string) !string {
2 return fn [s] (str string) !string {
3 return s + str
4 }
5}
6
7fn f2(s string) fn (string) ?string {
8 return fn [s] (str string) ?string {
9 return s + str
10 }
11}
12
13fn f3(s string) fn (string) string {
14 return fn [s] (str string) string {
15 return s + str
16 }
17}
18
19fn f4(s string) fn (string) ?string {
20 return fn (str string) ?string {
21 return none
22 }
23}
24
25fn f5(s string) fn (string) !string {
26 return fn (str string) !string {
27 return error('test')
28 }
29}
30
31fn test_call_nested_anon() {
32 println(f1('V')('Lang')!)
33 s1 := f1('V')('Lang')!
34 println(s1)
35 s2 := f1('V')('Lang') or { 'ErrLang' }
36 println(s2)
37 s3 := f2('V')('Lang')?
38 println(s3)
39 s4 := f2('V')('Lang') or { 'NoneLang' }
40 println(s4)
41 s := f3('V')('Lang')
42 println(s)
43 assert s == 'VLang'
44 assert s1 == 'VLang'
45 assert s2 == 'VLang'
46 assert s3 == 'VLang'
47 assert s4 == 'VLang'
48
49 s5 := f4('V')('Lang') or { 'Lang++' }
50 println(s5)
51 assert s5 == 'Lang++'
52 s6 := f5('V')('Lang') or { '${err}' }
53 println(s6)
54 assert s6 == 'test'
55}
56