vfmt: support `match a { x...y {} }`
							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) | ||||||
| 			f.write('..') | 			if f.is_mbranch_expr { | ||||||
|  | 				f.write('...') | ||||||
|  | 			} else { | ||||||
|  | 				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') | ||||||
|  |  | ||||||
|  | @ -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