fmt: keep empty curlies and parenthesis as they are (#7329)
parent
a47749b204
commit
a2cd1b163c
33
doc/docs.md
33
doc/docs.md
|
@ -1509,8 +1509,7 @@ fn main() {
|
||||||
## References
|
## References
|
||||||
|
|
||||||
```v
|
```v
|
||||||
struct Foo {
|
struct Foo {}
|
||||||
}
|
|
||||||
|
|
||||||
fn (foo Foo) bar_method() {
|
fn (foo Foo) bar_method() {
|
||||||
// ...
|
// ...
|
||||||
|
@ -1730,8 +1729,7 @@ struct Dog {
|
||||||
breed string
|
breed string
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Cat {
|
struct Cat {}
|
||||||
}
|
|
||||||
|
|
||||||
fn (d Dog) speak() string {
|
fn (d Dog) speak() string {
|
||||||
return 'woof'
|
return 'woof'
|
||||||
|
@ -1800,14 +1798,11 @@ A sum type instance can hold a value of several different types. Use the `type`
|
||||||
keyword to declare a sum type:
|
keyword to declare a sum type:
|
||||||
|
|
||||||
```v
|
```v
|
||||||
struct Moon {
|
struct Moon {}
|
||||||
}
|
|
||||||
|
|
||||||
struct Mars {
|
struct Mars {}
|
||||||
}
|
|
||||||
|
|
||||||
struct Venus {
|
struct Venus {}
|
||||||
}
|
|
||||||
|
|
||||||
type World = Mars | Moon | Venus
|
type World = Mars | Moon | Venus
|
||||||
|
|
||||||
|
@ -1824,14 +1819,11 @@ To check whether a sum type instance holds a certain type, use `sum is Type`.
|
||||||
To cast a sum type to one of its variants you can use `sum as Type`:
|
To cast a sum type to one of its variants you can use `sum as Type`:
|
||||||
|
|
||||||
```v
|
```v
|
||||||
struct Moon {
|
struct Moon {}
|
||||||
}
|
|
||||||
|
|
||||||
struct Mars {
|
struct Mars {}
|
||||||
}
|
|
||||||
|
|
||||||
struct Venus {
|
struct Venus {}
|
||||||
}
|
|
||||||
|
|
||||||
type World = Mars | Moon | Venus
|
type World = Mars | Moon | Venus
|
||||||
|
|
||||||
|
@ -1883,14 +1875,11 @@ complex expression than just a variable name.
|
||||||
You can also use `match` to determine the variant:
|
You can also use `match` to determine the variant:
|
||||||
|
|
||||||
```v
|
```v
|
||||||
struct Moon {
|
struct Moon {}
|
||||||
}
|
|
||||||
|
|
||||||
struct Mars {
|
struct Mars {}
|
||||||
}
|
|
||||||
|
|
||||||
struct Venus {
|
struct Venus {}
|
||||||
}
|
|
||||||
|
|
||||||
type World = Mars | Moon | Venus
|
type World = Mars | Moon | Venus
|
||||||
|
|
||||||
|
|
|
@ -297,8 +297,11 @@ pub fn (mut f Fmt) stmt(node ast.Stmt) {
|
||||||
if node.is_unsafe {
|
if node.is_unsafe {
|
||||||
f.write('unsafe ')
|
f.write('unsafe ')
|
||||||
}
|
}
|
||||||
f.writeln('{')
|
f.write('{')
|
||||||
|
if node.stmts.len > 0 || node.pos.line_nr < node.pos.last_line {
|
||||||
|
f.writeln('')
|
||||||
f.stmts(node.stmts)
|
f.stmts(node.stmts)
|
||||||
|
}
|
||||||
f.writeln('}')
|
f.writeln('}')
|
||||||
}
|
}
|
||||||
ast.BranchStmt {
|
ast.BranchStmt {
|
||||||
|
@ -306,36 +309,26 @@ pub fn (mut f Fmt) stmt(node ast.Stmt) {
|
||||||
}
|
}
|
||||||
ast.CompFor {
|
ast.CompFor {
|
||||||
typ := f.no_cur_mod(f.table.type_to_str(node.typ))
|
typ := f.no_cur_mod(f.table.type_to_str(node.typ))
|
||||||
f.writeln('\$for $node.val_var in ${typ}.$node.kind.str() {')
|
f.write('\$for $node.val_var in ${typ}.$node.kind.str() {')
|
||||||
|
if node.stmts.len > 0 || node.pos.line_nr < node.pos.last_line {
|
||||||
|
f.writeln('')
|
||||||
f.stmts(node.stmts)
|
f.stmts(node.stmts)
|
||||||
|
}
|
||||||
f.writeln('}')
|
f.writeln('}')
|
||||||
}
|
}
|
||||||
ast.ConstDecl {
|
ast.ConstDecl {
|
||||||
f.const_decl(node)
|
f.const_decl(node)
|
||||||
}
|
}
|
||||||
ast.DeferStmt {
|
ast.DeferStmt {
|
||||||
f.writeln('defer {')
|
f.write('defer {')
|
||||||
|
if node.stmts.len > 0 || node.pos.line_nr < node.pos.last_line {
|
||||||
|
f.writeln('')
|
||||||
f.stmts(node.stmts)
|
f.stmts(node.stmts)
|
||||||
|
}
|
||||||
f.writeln('}')
|
f.writeln('}')
|
||||||
}
|
}
|
||||||
ast.EnumDecl {
|
ast.EnumDecl {
|
||||||
f.attrs(node.attrs)
|
f.enum_decl(node)
|
||||||
if node.is_pub {
|
|
||||||
f.write('pub ')
|
|
||||||
}
|
|
||||||
name := node.name.after('.')
|
|
||||||
f.writeln('enum $name {')
|
|
||||||
f.comments(node.comments, inline: true, level: .indent)
|
|
||||||
for field in node.fields {
|
|
||||||
f.write('\t$field.name')
|
|
||||||
if field.has_expr {
|
|
||||||
f.write(' = ')
|
|
||||||
f.expr(field.expr)
|
|
||||||
}
|
|
||||||
f.comments(field.comments, inline: true, has_nl: false, level: .indent)
|
|
||||||
f.writeln('')
|
|
||||||
}
|
|
||||||
f.writeln('}\n')
|
|
||||||
}
|
}
|
||||||
ast.ExprStmt {
|
ast.ExprStmt {
|
||||||
f.comments(node.comments, {})
|
f.comments(node.comments, {})
|
||||||
|
@ -362,8 +355,11 @@ pub fn (mut f Fmt) stmt(node ast.Stmt) {
|
||||||
f.write('; ')
|
f.write('; ')
|
||||||
f.stmt(node.inc)
|
f.stmt(node.inc)
|
||||||
f.remove_new_line()
|
f.remove_new_line()
|
||||||
f.writeln(' {')
|
f.write(' {')
|
||||||
|
if node.stmts.len > 0 || node.pos.line_nr < node.pos.last_line {
|
||||||
|
f.writeln('')
|
||||||
f.stmts(node.stmts)
|
f.stmts(node.stmts)
|
||||||
|
}
|
||||||
f.writeln('}')
|
f.writeln('}')
|
||||||
}
|
}
|
||||||
ast.ForInStmt {
|
ast.ForInStmt {
|
||||||
|
@ -389,8 +385,11 @@ pub fn (mut f Fmt) stmt(node ast.Stmt) {
|
||||||
f.write(' .. ')
|
f.write(' .. ')
|
||||||
f.expr(node.high)
|
f.expr(node.high)
|
||||||
}
|
}
|
||||||
f.writeln(' {')
|
f.write(' {')
|
||||||
|
if node.stmts.len > 0 || node.pos.line_nr < node.pos.last_line {
|
||||||
|
f.writeln('')
|
||||||
f.stmts(node.stmts)
|
f.stmts(node.stmts)
|
||||||
|
}
|
||||||
f.writeln('}')
|
f.writeln('}')
|
||||||
}
|
}
|
||||||
ast.ForStmt {
|
ast.ForStmt {
|
||||||
|
@ -400,11 +399,14 @@ pub fn (mut f Fmt) stmt(node ast.Stmt) {
|
||||||
f.write('for ')
|
f.write('for ')
|
||||||
f.expr(node.cond)
|
f.expr(node.cond)
|
||||||
if node.is_inf {
|
if node.is_inf {
|
||||||
f.writeln('{')
|
f.write('{')
|
||||||
} else {
|
} else {
|
||||||
f.writeln(' {')
|
f.write(' {')
|
||||||
}
|
}
|
||||||
|
if node.stmts.len > 0 || node.pos.line_nr < node.pos.last_line {
|
||||||
|
f.writeln('')
|
||||||
f.stmts(node.stmts)
|
f.stmts(node.stmts)
|
||||||
|
}
|
||||||
f.writeln('}')
|
f.writeln('}')
|
||||||
}
|
}
|
||||||
ast.GlobalDecl {
|
ast.GlobalDecl {
|
||||||
|
@ -597,6 +599,10 @@ pub fn (mut f Fmt) struct_decl(node ast.StructDecl) {
|
||||||
f.write(gtypes)
|
f.write(gtypes)
|
||||||
f.write('>')
|
f.write('>')
|
||||||
}
|
}
|
||||||
|
if node.fields.len == 0 && node.pos.line_nr == node.pos.last_line {
|
||||||
|
f.writeln(' {}\n')
|
||||||
|
return
|
||||||
|
}
|
||||||
f.writeln(' {')
|
f.writeln(' {')
|
||||||
mut max := 0
|
mut max := 0
|
||||||
mut max_type := 0
|
mut max_type := 0
|
||||||
|
@ -701,7 +707,10 @@ pub fn (mut f Fmt) interface_decl(node ast.InterfaceDecl) {
|
||||||
f.write('pub ')
|
f.write('pub ')
|
||||||
}
|
}
|
||||||
name := node.name.after('.')
|
name := node.name.after('.')
|
||||||
f.writeln('interface $name {')
|
f.write('interface $name {')
|
||||||
|
if node.methods.len > 0 || node.pos.line_nr < node.pos.last_line {
|
||||||
|
f.writeln('')
|
||||||
|
}
|
||||||
f.comments_after_last_field(node.pre_comments)
|
f.comments_after_last_field(node.pre_comments)
|
||||||
for method in node.methods {
|
for method in node.methods {
|
||||||
f.write('\t')
|
f.write('\t')
|
||||||
|
@ -712,6 +721,30 @@ pub fn (mut f Fmt) interface_decl(node ast.InterfaceDecl) {
|
||||||
f.writeln('}\n')
|
f.writeln('}\n')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn (mut f Fmt) enum_decl(node ast.EnumDecl) {
|
||||||
|
f.attrs(node.attrs)
|
||||||
|
if node.is_pub {
|
||||||
|
f.write('pub ')
|
||||||
|
}
|
||||||
|
name := node.name.after('.')
|
||||||
|
if node.fields.len == 0 && node.pos.line_nr == node.pos.last_line {
|
||||||
|
f.writeln('enum $name {}\n')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
f.writeln('enum $name {')
|
||||||
|
f.comments(node.comments, inline: true, level: .indent)
|
||||||
|
for field in node.fields {
|
||||||
|
f.write('\t$field.name')
|
||||||
|
if field.has_expr {
|
||||||
|
f.write(' = ')
|
||||||
|
f.expr(field.expr)
|
||||||
|
}
|
||||||
|
f.comments(field.comments, inline: true, has_nl: false, level: .indent)
|
||||||
|
f.writeln('')
|
||||||
|
}
|
||||||
|
f.writeln('}\n')
|
||||||
|
}
|
||||||
|
|
||||||
pub fn (mut f Fmt) prefix_expr_cast_expr(fexpr ast.Expr) {
|
pub fn (mut f Fmt) prefix_expr_cast_expr(fexpr ast.Expr) {
|
||||||
mut is_pe_amp_ce := false
|
mut is_pe_amp_ce := false
|
||||||
mut ce := ast.CastExpr{}
|
mut ce := ast.CastExpr{}
|
||||||
|
@ -1254,8 +1287,11 @@ pub fn (mut f Fmt) fn_decl(node ast.FnDecl) {
|
||||||
f.write(node.stringify(f.table, f.cur_mod, f.mod2alias)) // `Expr` instead of `ast.Expr` in mod ast
|
f.write(node.stringify(f.table, f.cur_mod, f.mod2alias)) // `Expr` instead of `ast.Expr` in mod ast
|
||||||
if node.language == .v {
|
if node.language == .v {
|
||||||
if !node.no_body {
|
if !node.no_body {
|
||||||
f.writeln(' {')
|
f.write(' {')
|
||||||
|
if node.stmts.len > 0 || node.pos.line_nr < node.pos.last_line {
|
||||||
|
f.writeln('')
|
||||||
f.stmts(node.stmts)
|
f.stmts(node.stmts)
|
||||||
|
}
|
||||||
f.write('}')
|
f.write('}')
|
||||||
}
|
}
|
||||||
if !node.is_anon {
|
if !node.is_anon {
|
||||||
|
@ -1908,6 +1944,10 @@ pub fn (mut f Fmt) const_decl(it ast.ConstDecl) {
|
||||||
if it.is_pub {
|
if it.is_pub {
|
||||||
f.write('pub ')
|
f.write('pub ')
|
||||||
}
|
}
|
||||||
|
if it.fields.len == 0 && it.pos.line_nr == it.pos.last_line {
|
||||||
|
f.writeln('const ()\n')
|
||||||
|
return
|
||||||
|
}
|
||||||
f.writeln('const (')
|
f.writeln('const (')
|
||||||
mut max := 0
|
mut max := 0
|
||||||
for field in it.fields {
|
for field in it.fields {
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
const ()
|
||||||
|
|
||||||
|
const (
|
||||||
|
)
|
||||||
|
|
||||||
|
struct Bar {}
|
||||||
|
|
||||||
|
struct Bar2 {
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Spam {}
|
||||||
|
|
||||||
|
interface Spam2 {
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Baz {}
|
||||||
|
|
||||||
|
enum Baz2 {
|
||||||
|
}
|
||||||
|
|
||||||
|
fn foo() {}
|
||||||
|
|
||||||
|
fn foo2() {
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
arr := []int{}
|
||||||
|
x := 1
|
||||||
|
for s in arr {}
|
||||||
|
for s in arr {
|
||||||
|
}
|
||||||
|
for i := 0; i < 5; i++ {}
|
||||||
|
for j := 0; j < 5; j++ {
|
||||||
|
}
|
||||||
|
for false {}
|
||||||
|
for false {
|
||||||
|
}
|
||||||
|
defer {}
|
||||||
|
defer {
|
||||||
|
}
|
||||||
|
unsafe {}
|
||||||
|
unsafe {
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,8 +2,7 @@ struct Foo {
|
||||||
x int
|
x int
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Test {
|
struct Test {}
|
||||||
}
|
|
||||||
|
|
||||||
struct Bar {
|
struct Bar {
|
||||||
Foo
|
Foo
|
||||||
|
|
|
@ -1827,7 +1827,7 @@ fn (mut p Parser) const_decl() ast.ConstDecl {
|
||||||
p.top_level_statement_end()
|
p.top_level_statement_end()
|
||||||
p.check(.rpar)
|
p.check(.rpar)
|
||||||
return ast.ConstDecl{
|
return ast.ConstDecl{
|
||||||
pos: start_pos.extend(end_pos)
|
pos: start_pos.extend_with_last_line(end_pos, p.prev_tok.line_nr)
|
||||||
fields: fields
|
fields: fields
|
||||||
is_pub: is_pub
|
is_pub: is_pub
|
||||||
end_comments: comments
|
end_comments: comments
|
||||||
|
|
|
@ -459,7 +459,7 @@ fn (mut p Parser) interface_decl() ast.InterfaceDecl {
|
||||||
}
|
}
|
||||||
p.top_level_statement_end()
|
p.top_level_statement_end()
|
||||||
p.check(.rcbr)
|
p.check(.rcbr)
|
||||||
start_pos.last_line = p.prev_tok.line_nr
|
start_pos.last_line = p.prev_tok.line_nr - 1
|
||||||
return ast.InterfaceDecl{
|
return ast.InterfaceDecl{
|
||||||
name: interface_name
|
name: interface_name
|
||||||
methods: methods
|
methods: methods
|
||||||
|
|
Loading…
Reference in New Issue