// 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.
// This is a package for testing comment placement by go/printer.
//
package main
import "fmt" // fmt
const c0 = 0 // zero
const (
c1 = iota; // c1
c2; // c2
)
// The SZ struct; it is empty.
type SZ struct{}
// The S0 struct; no field is exported.
type S0 struct {
int;
x, y, z int; // 3 unexported fields
}
// The S1 struct; some fields are not exported.
type S1 struct {
S0;
A, B, C float; // 3 exported fields
D, b, c int; // 2 unexported fields
}
// The S2 struct; all fields are exported.
type S2 struct {
S1;
A, B, C float; // 3 exported fields
}
// The IZ interface; it is empty.
type SZ interface{}
// The I0 interface; no method is exported.
type I0 interface {
f(x int) int; // unexported method
}
// The I1 interface; some methods are not exported.
type I1 interface {
I0;
F(x float) float; // exported methods
g(x int) int; // unexported method
}
// The I2 interface; all methods are exported.
type I2 interface {
I0;
F(x float) float; // exported method
G(x float) float; // exported method
}
// This comment group should be separated
// with a newline from the next comment
// group.
// This comment should NOT be associated with the next declaration.
var x int // x
var ()
// This comment SHOULD be associated with the next declaration.
func f0() {
const pi = 3.14; // pi
var s1 struct{} /* an empty struct */ /* foo */
// a struct constructor
// --------------------
var s2 struct{} = struct{}{};
x := pi;
}
//
// NO SPACE HERE
//
func f1() {
f0();
/* 1 */
// 2
/* 3 */
/* 4 */
f0();
}
func _() {
// this comment should be properly indented
}
func abs(x int) int {
if x < 0 { // the tab printed before this comment's // must not affect the remaining lines
return -x // this statement should be properly indented
}
return x;
}
func typeswitch(x interface{}) {
switch v := x.(type) {
case bool, int, float:
case string:
default:
}
switch x.(type) {
}
switch v0, ok := x.(int); v := x.(type) {
}
switch v0, ok := x.(int); x.(type) {
case byte: // this comment should be on the same line as the keyword
// this comment should be normally indented
_ = 0
case bool, int, float:
// this comment should be indented
case string:
default:
// this comment should be indented
}
// this comment should not be indented
}
func _() {
/* freestanding comment
aligned line
aligned line
*/
}
func _() {
/* freestanding comment
aligned line
aligned line
*/
}
func _() {
/* freestanding comment
aligned line
aligned line */
}
func _() {
/* freestanding comment
aligned line
aligned line
*/
}
func _() {
/* freestanding comment
aligned line
aligned line
*/
}
func _() {
/* freestanding comment
aligned line
aligned line */
}
func _() {
/*
freestanding comment
aligned line
aligned line
*/
}
func _() {
/*
freestanding comment
aligned line
aligned line
*/
}
func _() {
/*
freestanding comment
aligned line
aligned line */
}
func _() {
/*
freestanding comment
aligned line
aligned line
*/
}
func _() {
/*
freestanding comment
aligned line
aligned line
*/
}
func _() {
/*
freestanding comment
aligned line
aligned line */
}
/*
* line
* of
* stars
*/
/* another line
* of
* stars */
/* and another line
* of
* stars */
/*
aligned in middle
here
not here
*/
/*
blank line in middle:
with no leading spaces on blank line.
*/
/*
aligned in middle
here
not here
*/
/*
blank line in middle:
with no leading spaces on blank line.
*/
func _() {
/*
* line
* of
* stars
*/
/*
aligned in middle
here
not here
*/
/*
blank line in middle:
with no leading spaces on blank line.
*/
}
// Some interesting interspersed comments
func _( /* this */ x /* is */ /* an */ int) {}
// Line comments with tabs
func _() {
var finput *bufio.Reader; // input file
var stderr *bufio.Writer;
var ftable *bufio.Writer; // y.go file
var foutput *bufio.Writer; // y.output file
var oflag string; // -o [y.go] - y.go file
var vflag string; // -v [y.output] - y.output file
var lflag bool; // -l - disable line directives
}
// This comment is the last entry in this file. It must be printed.
|