mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
vfmt: support match a { x...y {} }
This commit is contained in:
parent
35096cda3f
commit
4bf1c2fdcc
@ -46,6 +46,7 @@ pub mut:
|
|||||||
use_short_fn_args bool
|
use_short_fn_args bool
|
||||||
it_name string // the name to replace `it` with
|
it_name string // the name to replace `it` with
|
||||||
inside_lambda bool
|
inside_lambda bool
|
||||||
|
is_mbranch_expr bool // math a { x...y { } }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn fmt(file ast.File, table &table.Table, is_debug bool) string {
|
pub fn fmt(file ast.File, table &table.Table, is_debug bool) string {
|
||||||
@ -896,7 +897,11 @@ pub fn (mut f Fmt) expr(node ast.Expr) {
|
|||||||
}
|
}
|
||||||
ast.RangeExpr {
|
ast.RangeExpr {
|
||||||
f.expr(node.low)
|
f.expr(node.low)
|
||||||
|
if f.is_mbranch_expr {
|
||||||
|
f.write('...')
|
||||||
|
} else {
|
||||||
f.write('..')
|
f.write('..')
|
||||||
|
}
|
||||||
f.expr(node.high)
|
f.expr(node.high)
|
||||||
}
|
}
|
||||||
ast.SelectExpr {
|
ast.SelectExpr {
|
||||||
@ -1530,12 +1535,14 @@ pub fn (mut f Fmt) match_expr(it ast.MatchExpr) {
|
|||||||
}
|
}
|
||||||
if !branch.is_else {
|
if !branch.is_else {
|
||||||
// normal branch
|
// normal branch
|
||||||
|
f.is_mbranch_expr = true
|
||||||
for j, expr in branch.exprs {
|
for j, expr in branch.exprs {
|
||||||
f.expr(expr)
|
f.expr(expr)
|
||||||
if j < branch.exprs.len - 1 {
|
if j < branch.exprs.len - 1 {
|
||||||
f.write(', ')
|
f.write(', ')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
f.is_mbranch_expr = false
|
||||||
} else {
|
} else {
|
||||||
// else branch
|
// else branch
|
||||||
f.write('else')
|
f.write('else')
|
||||||
|
15
vlib/v/fmt/tests/match_range_expression_branches_keep.vv
Normal file
15
vlib/v/fmt/tests/match_range_expression_branches_keep.vv
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
pub fn (b byte) str_escaped() string {
|
||||||
|
str := match b {
|
||||||
|
0 { '`\\' + '0`' } // Bug is preventing \\0 in a literal
|
||||||
|
7 { '`\\a`' }
|
||||||
|
8 { '`\\b`' }
|
||||||
|
9 { '`\\t`' }
|
||||||
|
10 { '`\\n`' }
|
||||||
|
11 { '`\\v`' }
|
||||||
|
12 { '`\\f`' }
|
||||||
|
13 { '`\\r`' }
|
||||||
|
32...126 { b.str() }
|
||||||
|
else { '0x' + b.hex() }
|
||||||
|
}
|
||||||
|
return str
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user