fmt: improve match branch wrapping (#9619)
							parent
							
								
									1d5ed89138
								
							
						
					
					
						commit
						3a07fbc653
					
				| 
						 | 
					@ -1475,12 +1475,12 @@ pub fn (expr Expr) position() token.Position {
 | 
				
			||||||
			// println('compiler bug, unhandled EmptyExpr position()')
 | 
								// println('compiler bug, unhandled EmptyExpr position()')
 | 
				
			||||||
			return token.Position{}
 | 
								return token.Position{}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		NodeError, ArrayDecompose, ArrayInit, AsCast, Assoc, AtExpr, BoolLiteral, CallExpr, CastExpr,
 | 
							NodeError, ArrayDecompose, ArrayInit, AsCast, Assoc, AtExpr, BoolLiteral, CallExpr,
 | 
				
			||||||
		ChanInit, CharLiteral, ConcatExpr, Comment, ComptimeCall, ComptimeSelector, EnumVal, DumpExpr,
 | 
							CastExpr, ChanInit, CharLiteral, ConcatExpr, Comment, ComptimeCall, ComptimeSelector,
 | 
				
			||||||
		FloatLiteral, GoExpr, Ident, IfExpr, IntegerLiteral, Likely, LockExpr, MapInit, MatchExpr,
 | 
							EnumVal, DumpExpr, FloatLiteral, GoExpr, Ident, IfExpr, IntegerLiteral, Likely, LockExpr,
 | 
				
			||||||
		None, OffsetOf, OrExpr, ParExpr, PostfixExpr, PrefixExpr, RangeExpr, SelectExpr, SelectorExpr,
 | 
							MapInit, MatchExpr, None, OffsetOf, OrExpr, ParExpr, PostfixExpr, PrefixExpr, RangeExpr,
 | 
				
			||||||
		SizeOf, SqlExpr, StringInterLiteral, StringLiteral, StructInit, TypeNode, TypeOf, UnsafeExpr
 | 
							SelectExpr, SelectorExpr, SizeOf, SqlExpr, StringInterLiteral, StringLiteral, StructInit,
 | 
				
			||||||
		 {
 | 
							TypeNode, TypeOf, UnsafeExpr {
 | 
				
			||||||
			return expr.pos
 | 
								return expr.pos
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		IndexExpr {
 | 
							IndexExpr {
 | 
				
			||||||
| 
						 | 
					@ -1617,8 +1617,7 @@ pub fn (node Node) position() token.Position {
 | 
				
			||||||
		StructField {
 | 
							StructField {
 | 
				
			||||||
			return node.pos.extend(node.type_pos)
 | 
								return node.pos.extend(node.type_pos)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		MatchBranch, SelectBranch, EnumField, ConstField, StructInitField, GlobalField, CallArg
 | 
							MatchBranch, SelectBranch, EnumField, ConstField, StructInitField, GlobalField, CallArg {
 | 
				
			||||||
		 {
 | 
					 | 
				
			||||||
			return node.pos
 | 
								return node.pos
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		IfBranch {
 | 
							IfBranch {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3084,8 +3084,8 @@ pub fn (mut c Checker) assign_stmt(mut assign_stmt ast.AssignStmt) {
 | 
				
			||||||
						right.position())
 | 
											right.position())
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			.and_assign, .or_assign, .xor_assign, .mod_assign, .left_shift_assign, .right_shift_assign
 | 
								.and_assign, .or_assign, .xor_assign, .mod_assign, .left_shift_assign,
 | 
				
			||||||
			 {
 | 
								.right_shift_assign {
 | 
				
			||||||
				if !left_sym.is_int()
 | 
									if !left_sym.is_int()
 | 
				
			||||||
					&& !c.table.get_final_type_symbol(left_type_unwrapped).is_int() {
 | 
										&& !c.table.get_final_type_symbol(left_type_unwrapped).is_int() {
 | 
				
			||||||
					c.error('operator $assign_stmt.op.str() not defined on left operand type `$left_sym.name`',
 | 
										c.error('operator $assign_stmt.op.str() not defined on left operand type `$left_sym.name`',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2068,7 +2068,12 @@ pub fn (mut f Fmt) match_expr(node ast.MatchExpr) {
 | 
				
			||||||
			// normal branch
 | 
								// normal branch
 | 
				
			||||||
			f.is_mbranch_expr = true
 | 
								f.is_mbranch_expr = true
 | 
				
			||||||
			for j, expr in branch.exprs {
 | 
								for j, expr in branch.exprs {
 | 
				
			||||||
				f.expr(expr)
 | 
									estr := f.node_str(expr)
 | 
				
			||||||
 | 
									if f.line_len + estr.len + 2 > fmt.max_len[5] {
 | 
				
			||||||
 | 
										f.remove_new_line({})
 | 
				
			||||||
 | 
										f.writeln('')
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									f.write(estr)
 | 
				
			||||||
				if j < branch.ecmnts.len && branch.ecmnts[j].len > 0 {
 | 
									if j < branch.ecmnts.len && branch.ecmnts[j].len > 0 {
 | 
				
			||||||
					f.write(' ')
 | 
										f.write(' ')
 | 
				
			||||||
					f.comments(branch.ecmnts[j], iembed: true)
 | 
										f.comments(branch.ecmnts[j], iembed: true)
 | 
				
			||||||
| 
						 | 
					@ -2076,7 +2081,6 @@ pub fn (mut f Fmt) match_expr(node ast.MatchExpr) {
 | 
				
			||||||
				if j < branch.exprs.len - 1 {
 | 
									if j < branch.exprs.len - 1 {
 | 
				
			||||||
					f.write(', ')
 | 
										f.write(', ')
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				f.wrap_long_line(4, false)
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			f.is_mbranch_expr = false
 | 
								f.is_mbranch_expr = false
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,11 +24,9 @@ fn match_branch_comment() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn really_long_branch_exprs() {
 | 
					fn really_long_branch_exprs() {
 | 
				
			||||||
	match x {
 | 
						match x {
 | 
				
			||||||
		ArrayInit, AsCast, Assoc, AtExpr, BoolLiteral, CallExpr, CastExpr, ChanInit, CharLiteral,
 | 
							NodeError, ArrayDecompose, ArrayInit, AsCast, Assoc, AtExpr, BoolLiteral, CallExpr,
 | 
				
			||||||
		ConcatExpr, Comment, EnumVal, FloatLiteral, GoExpr, Ident, IfExpr, IndexExpr, IntegerLiteral,
 | 
							MapInit, MatchExpr, None, OffsetOf, OrExpr, ParExpr, PostfixExpr, PrefixExpr, RangeExpr,
 | 
				
			||||||
		Likely, LockExpr, MapInit, MatchExpr, None, OrExpr, ParExpr, PostfixExpr, PrefixExpr,
 | 
							SelectExpr, SelectorExpr, SizeOf, SqlExpr, StringInterLiteral, StringLiteral, StructInit {
 | 
				
			||||||
		RangeExpr, SelectExpr, SelectorExpr, SizeOf, SqlExpr, StringInterLiteral, StringLiteral,
 | 
					 | 
				
			||||||
		StructInit, Type, TypeOf, UnsafeExpr {
 | 
					 | 
				
			||||||
			return expr.pos
 | 
								return expr.pos
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		InfixExpr {
 | 
							InfixExpr {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@ fn match_branch_comment() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn really_long_branch_exprs() {
 | 
					fn really_long_branch_exprs() {
 | 
				
			||||||
	match x {
 | 
						match x {
 | 
				
			||||||
		ArrayInit, AsCast, Assoc, AtExpr, BoolLiteral, CallExpr, CastExpr, ChanInit, CharLiteral, ConcatExpr, Comment, EnumVal, FloatLiteral, GoExpr, Ident, IfExpr, IndexExpr, IntegerLiteral, Likely, LockExpr, MapInit, MatchExpr, None, OrExpr, ParExpr, PostfixExpr, PrefixExpr, RangeExpr, SelectExpr, SelectorExpr, SizeOf, SqlExpr, StringInterLiteral, StringLiteral, StructInit, Type, TypeOf, UnsafeExpr {
 | 
							NodeError, ArrayDecompose, ArrayInit, AsCast, Assoc, AtExpr, BoolLiteral, CallExpr, MapInit, MatchExpr, None, OffsetOf, OrExpr, ParExpr, PostfixExpr, PrefixExpr, RangeExpr, SelectExpr, SelectorExpr, SizeOf, SqlExpr, StringInterLiteral, StringLiteral, StructInit {
 | 
				
			||||||
			return expr.pos
 | 
								return expr.pos
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		InfixExpr {
 | 
							InfixExpr {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue