fmt: do not write single line or blocks with multi line stmts (#8952)
							parent
							
								
									8dff168e01
								
							
						
					
					
						commit
						2c609411dd
					
				|  | @ -794,10 +794,12 @@ fn (mut b Builder) cc_linux_cross() { | ||||||
| 	if b.pref.show_cc { | 	if b.pref.show_cc { | ||||||
| 		println(cc_cmd) | 		println(cc_cmd) | ||||||
| 	} | 	} | ||||||
| 	cc_res := os.exec(cc_cmd) or { os.Result{ | 	cc_res := os.exec(cc_cmd) or { | ||||||
| 		exit_code: 1 | 		os.Result{ | ||||||
| 		output: 'no `cc` command found' | 			exit_code: 1 | ||||||
| 	} } | 			output: 'no `cc` command found' | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| 	if cc_res.exit_code != 0 { | 	if cc_res.exit_code != 0 { | ||||||
| 		println('Cross compilation for Linux failed (first step, cc). Make sure you have clang installed.') | 		println('Cross compilation for Linux failed (first step, cc). Make sure you have clang installed.') | ||||||
| 		verror(cc_res.output) | 		verror(cc_res.output) | ||||||
|  |  | ||||||
|  | @ -459,11 +459,10 @@ pub fn (mut f Fmt) stmt(node ast.Stmt) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| fn stmt_is_single_line(stmt ast.Stmt) bool { | fn stmt_is_single_line(stmt ast.Stmt) bool { | ||||||
| 	match stmt { | 	return match stmt { | ||||||
| 		ast.ExprStmt { return expr_is_single_line(stmt.expr) } | 		ast.ExprStmt, ast.AssertStmt { expr_is_single_line(stmt.expr) } | ||||||
| 		ast.Return { return true } | 		ast.Return, ast.AssignStmt, ast.BranchStmt { true } | ||||||
| 		ast.AssignStmt { return true } | 		else { false } | ||||||
| 		else { return false } |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -1065,7 +1064,7 @@ pub fn (mut f Fmt) or_expr(node ast.OrExpr) { | ||||||
| 			if node.stmts.len == 0 { | 			if node.stmts.len == 0 { | ||||||
| 				f.write(' or { }') | 				f.write(' or { }') | ||||||
| 				return | 				return | ||||||
| 			} else if node.stmts.len == 1 { | 			} else if node.stmts.len == 1 && stmt_is_single_line(node.stmts[0]) { | ||||||
| 				// the control stmts (return/break/continue...) print a newline inside them,
 | 				// the control stmts (return/break/continue...) print a newline inside them,
 | ||||||
| 				// so, since this'll all be on one line, trim any possible whitespace
 | 				// so, since this'll all be on one line, trim any possible whitespace
 | ||||||
| 				str := f.stmt_str(node.stmts[0]).trim_space() | 				str := f.stmt_str(node.stmts[0]).trim_space() | ||||||
|  |  | ||||||
|  | @ -18,3 +18,11 @@ fn unwrapped_single_line_if() { | ||||||
| 		println('Another stmt') | 		println('Another stmt') | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | fn or_with_one_multi_line_stmt() { | ||||||
|  | 	b := or_func() or { | ||||||
|  | 		MyStruct{ | ||||||
|  | 			val: 'xyz' | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -0,0 +1,8 @@ | ||||||
|  | fn single_line_stmts() { | ||||||
|  | 	// Wouldn't be the or-block's stmt be single line, the block would be written as multi line
 | ||||||
|  | 	foo() or { assert false } | ||||||
|  | 	for { | ||||||
|  | 		foo() or { break } | ||||||
|  | 	} | ||||||
|  | 	foo() or { return } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue