v2 / vlib / v / fmt / tests / match_expected.vv
65 lines · 59 sloc · 971 bytes · b22305ec7fe40790310def9e36f3b50aa3f1b7e4
Raw
1fn match_expr_assignment() {
2 a := 20
3 _ := match a {
4 10 { 10 }
5 5 { 5 }
6 else { 2 }
7 }
8}
9
10fn match_branch_comment() {
11 a := 1
12 match a {
13 1 {
14 println('1')
15 }
16 2 {
17 println('2')
18 }
19 else {
20 // do nothing
21 }
22 }
23}
24
25fn really_long_branch_exprs() {
26 match x {
27 NodeError, ArrayDecompose, ArrayInit, AsCast, Assoc, AtExpr, BoolLiteral, CallExpr,
28 MapInit, MatchExpr, None, OffsetOf, OrExpr, ParExpr, PostfixExpr, PrefixExpr, RangeExpr,
29 SelectExpr, SelectorExpr, SizeOf, SqlExpr, StringInterLiteral, StringLiteral, StructInit {
30 return expr.pos
31 }
32 InfixExpr {
33 Foo{
34 x: 3
35 }
36 }
37 }
38}
39
40fn match_branch_extra_comma() {
41 match x {
42 Foo, Bar {}
43 int, string {}
44 }
45
46 match n {
47 0...5 {}
48 2, 3 {}
49 else {}
50 }
51}
52
53fn match_index_range_expr(var string) string {
54 return match true {
55 var.len < 3 { 'i#' + var }
56 var[1..2].contains('#') { var }
57 else { 'i#' + var }
58 }
59}
60
61fn match_condition_or_block() {
62 match read_bool() {
63 true {}
64 } or {}
65}
66