fmt: force empty lines after struct declarations and most functions (#9096)

pull/9100/head
Lukas Neubert 2021-03-03 23:56:40 +01:00 committed by GitHub
parent 3e5a0dfc94
commit 0f8f8bd90d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 17 additions and 7 deletions

View File

@ -324,21 +324,22 @@ fn (f Fmt) should_insert_newline_before_node(node ast.Node, prev_node ast.Node)
if prev_stmt is ast.HashStmt && stmt !is ast.HashStmt && stmt !is ast.ExprStmt {
return true
}
// Force a newline after a block of function declarations
// Force a newline after function declarations
// The only exception is inside an block of no_body functions
if prev_stmt is ast.FnDecl {
if prev_stmt.no_body && stmt !is ast.FnDecl {
if stmt !is ast.FnDecl || !prev_stmt.no_body {
return true
}
}
// The stmt shouldn't have a newline before
// if stmt.position().line_nr - prev_line_nr <= 1 {
// return false
// }
// Force a newline after struct declarations
if prev_stmt is ast.StructDecl {
return true
}
// Imports are handled special hence they are ignored here
if stmt is ast.Import || prev_stmt is ast.Import {
return false
}
// Attributes are not respected in the stmts position, so this requires a manual check
// Attributes are not respected in the stmts position, so this requires manual checking
if stmt is ast.StructDecl {
if stmt.attrs.len > 0 && stmt.attrs[0].pos.line_nr - prev_line_nr <= 1 {
return false

View File

@ -1,3 +1,7 @@
struct EmptyLineAfterStructs {}
fn empty_line_after_functions() {}
fn squash_multiple_empty_lines() {
println('a')

View File

@ -1,3 +1,5 @@
struct EmptyLineAfterStructs {}
fn empty_line_after_functions() {}
fn squash_multiple_empty_lines() {
println('a')

View File

@ -10,13 +10,16 @@ fn (rp RoutePair) test() ?[]string {
route := rp.route.split('/').filter(it != '')
return route_matches(url, route)
}
fn (rp RoutePair) test_match() {
rp.test() or { panic('should match: $rp') }
}
fn (rp RoutePair) test_no_match() {
rp.test() or { return }
panic('should not match: $rp')
}
fn (rp RoutePair) test_param(expected []string) {
res := rp.test() or { panic('should match: $rp') }
assert res == expected