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