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 { | ||||
| 		println(cc_cmd) | ||||
| 	} | ||||
| 	cc_res := os.exec(cc_cmd) or { os.Result{ | ||||
| 		exit_code: 1 | ||||
| 		output: 'no `cc` command found' | ||||
| 	} } | ||||
| 	cc_res := os.exec(cc_cmd) or { | ||||
| 		os.Result{ | ||||
| 			exit_code: 1 | ||||
| 			output: 'no `cc` command found' | ||||
| 		} | ||||
| 	} | ||||
| 	if cc_res.exit_code != 0 { | ||||
| 		println('Cross compilation for Linux failed (first step, cc). Make sure you have clang installed.') | ||||
| 		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 { | ||||
| 	match stmt { | ||||
| 		ast.ExprStmt { return expr_is_single_line(stmt.expr) } | ||||
| 		ast.Return { return true } | ||||
| 		ast.AssignStmt { return true } | ||||
| 		else { return false } | ||||
| 	return match stmt { | ||||
| 		ast.ExprStmt, ast.AssertStmt { expr_is_single_line(stmt.expr) } | ||||
| 		ast.Return, ast.AssignStmt, ast.BranchStmt { true } | ||||
| 		else { false } | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -1065,7 +1064,7 @@ pub fn (mut f Fmt) or_expr(node ast.OrExpr) { | |||
| 			if node.stmts.len == 0 { | ||||
| 				f.write(' or { }') | ||||
| 				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,
 | ||||
| 				// so, since this'll all be on one line, trim any possible whitespace
 | ||||
| 				str := f.stmt_str(node.stmts[0]).trim_space() | ||||
|  |  | |||
|  | @ -18,3 +18,11 @@ fn unwrapped_single_line_if() { | |||
| 		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