blob: b7d8ad2ea186c61ef4ff8212388659564d64365d [file] [log] [blame]
// 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
}