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 {
|
||||||
|
os.Result{
|
||||||
exit_code: 1
|
exit_code: 1
|
||||||
output: 'no `cc` command found'
|
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