| // Copyright 2009 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package statements |
| |
| var expr bool |
| |
| func use(x interface{}) {} |
| |
| // Formatting of if-statement headers. |
| func _() { |
| if {} |
| if;{} // no semicolon printed |
| if expr{} |
| if;expr{} // no semicolon printed |
| if (expr){} // no parens printed |
| if;((expr)){} // no semicolon and parens printed |
| if x:=expr;{ |
| use(x)} |
| if x:=expr; expr {use(x)} |
| } |
| |
| |
| // Formatting of switch-statement headers. |
| func _() { |
| switch {} |
| switch;{} // no semicolon printed |
| switch expr {} |
| switch;expr{} // no semicolon printed |
| switch (expr) {} // no parens printed |
| switch;((expr)){} // no semicolon and parens printed |
| switch x := expr; { default:use( |
| x) |
| } |
| switch x := expr; expr {default:use(x)} |
| } |
| |
| |
| // Formatting of switch statement bodies. |
| func _() { |
| switch { |
| } |
| |
| switch x := 0; x { |
| case 1: |
| use(x) |
| use(x) // followed by an empty line |
| |
| case 2: // followed by an empty line |
| |
| use(x) // followed by an empty line |
| |
| case 3: // no empty lines |
| use(x) |
| use(x) |
| } |
| |
| switch x { |
| case 0: |
| use(x) |
| case 1: // this comment should have no effect on the previous or next line |
| use(x) |
| } |
| |
| switch x := 0; x { |
| case 1: |
| x = 0 |
| // this comment should be indented |
| case 2: |
| x = 0 |
| // this comment should not be indented, it is aligned with the next case |
| case 3: |
| x = 0 |
| /* indented comment |
| aligned |
| aligned |
| */ |
| // bla |
| /* and more */ |
| case 4: |
| x = 0 |
| /* not indented comment |
| aligned |
| aligned |
| */ |
| // bla |
| /* and more */ |
| case 5: |
| } |
| } |
| |
| |
| // Formatting of for-statement headers. |
| func _() { |
| for{} |
| for expr {} |
| for (expr) {} // no parens printed |
| for;;{} // no semicolons printed |
| for x :=expr;; {use( x)} |
| for; expr;{} // no semicolons printed |
| for; ((expr));{} // no semicolons and parens printed |
| for; ; expr = false {} |
| for x :=expr; expr; {use(x)} |
| for x := expr;; expr=false {use(x)} |
| for;expr;expr =false { |
| } |
| for x := expr;expr;expr = false { use(x) } |
| for x := range []int{} { use(x) } |
| } |
| |
| |
| // Extra empty lines inside functions. Do respect source code line |
| // breaks between statement boundaries but print at most one empty |
| // line at a time. |
| func _() { |
| |
| const _ = 0 |
| |
| const _ = 1 |
| type _ int |
| type _ float |
| |
| var _ = 0 |
| var x = 1 |
| |
| // Each use(x) call below should have at most one empty line before and after. |
| |
| |
| |
| use(x) |
| |
| if x < x { |
| |
| use(x) |
| |
| } else { |
| |
| use(x) |
| |
| } |
| } |
| |
| |
| // Formatting around labels. |
| func _() { |
| L: |
| } |
| |
| |
| func _() { |
| // this comment should be indented |
| L: |
| } |
| |
| |
| func _() { |
| L: _ = 0 |
| } |
| |
| |
| func _() { |
| // this comment should be indented |
| L: _ = 0 |
| } |
| |
| |
| func _() { |
| for { |
| L1: _ = 0 |
| L2: |
| _ = 0 |
| } |
| } |
| |
| |
| func _() { |
| // this comment should be indented |
| for { |
| L1: _ = 0 |
| L2: |
| _ = 0 |
| } |
| } |
| |
| |
| func _() { |
| if { |
| _ = 0 |
| } |
| _ = 0 // the indentation here should not be affected by the long label name |
| AnOverlongLabel: |
| _ = 0 |
| |
| if { |
| _ = 0 |
| } |
| _ = 0 |
| |
| L: _ = 0 |
| } |