blob: 85a79f152cfab5eccb471f6397bb5d94df2b56e1 [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;
}