// Copyright 2012 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

// Test cases for idempotent comment formatting (was issue 1835).
/*
c1a
*/
/*
   c1b
*/
/* foo
c1c
*/
/* foo
   c1d
*/
/*
c1e
foo */
/*
   c1f
   foo */

func f() {
/*
c2a
*/
/*
   c2b
*/
/* foo
c2c
*/
/* foo
   c2d
*/
/*
c2e
foo */
/*
   c2f
   foo */
}

func g() {
/*
c3a
*/
/*
   c3b
*/
/* foo
c3c
*/
/* foo
   c3d
*/
/*
c3e
foo */
/*
   c3f
   foo */
}

// Test case taken literally from issue 1835.
func main() {
/*
prints test 5 times
*/
   for i := 0; i < 5; i++ {
      println("test")
   }
}

func issue5623() {
L:
   _ = yyyyyyyyyyyyyyyy // comment - should be aligned
   _ = xxxxxxxxxxxxxxxxxxxxxxxxxxxx /* comment */

   _ = yyyyyyyyyyyyyyyy /* comment - should be aligned */
   _ = xxxxxxxxxxxxxxxxxxxxxxxxxxxx // comment

LLLLLLL:
   _ = yyyyyyyyyyyyyyyy // comment - should be aligned
   _ = xxxxxxxxxxxxxxxxxxxxxxxxxxxx // comment

LL:
LLLLL:
   _ = xxxxxxxxxxxxxxxxxxxxxxxxxxxx /* comment */
   _ = yyyyyyyyyyyyyyyy /* comment - should be aligned */

   _ = xxxxxxxxxxxxxxxxxxxxxxxxxxxx // comment
   _ = yyyyyyyyyyyyyyyy // comment - should be aligned

// test case from issue
label:
   mask := uint64(1)<<c - 1 // Allocation mask
   used := atomic.LoadUint64(&h.used) // Current allocations
}
