OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [go/] [printer/] [testdata/] [comments.input] - Rev 747

Compare with Previous | Blame | View Log

// 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
)

// Alignment of comments in declarations>
const (
        _ T = iota  // comment
        _  // comment
        _  // comment
        _ = iota+10
        _  // comments

        _ = 10  // comment
        _ T = 20  // comment
)

const (
        _____ = iota // foo
        _ // bar
        _  = 0    // bal
        _ // bat
)

const (
        _ T = iota // comment
        _ // comment
        _ // comment
        _ = iota + 10
        _ // comment
        _ = 10
        _ = 20 // comment
        _ T = 0 // comment
)

// 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
}

// The S3 struct; all comments except for the last one must appear in the export.
type S3 struct {
        // lead comment for F1
        F1 int // line comment for F1
        // lead comment for F2
        F2 int // line comment for F2
        f3 int // f3 is not exported
}

// 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 f0.
func f0() {
        const pi = 3.14  // pi
        var s1 struct {}  /* an empty struct */ /* foo */
        // a struct constructor
        // --------------------
        var s2 struct {} = struct {}{}
        x := pi
}
//
// This comment should be associated with f1, with one blank line before the comment.
//
func f1() {
        f0()
        /* 1 */
        // 2
        /* 3 */
        /* 4 */
        f0()
}


func _() {
// this comment should be properly indented
}


func _(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
        }
        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 */
}

func _() {
        /* freestanding comment
           aligned line
        */
}

func _() {
        /* freestanding comment
           aligned line
           */
}

func _() {
        /* freestanding comment
           aligned line */
}

func _() {
        /*      freestanding comment
                aligned line
        */
}

func _() {
        /*      freestanding comment
                aligned line
                */
}

func _() {
        /*      freestanding comment
                aligned line */
}


func _() {
        /*
           freestanding comment
           aligned line
        */
}

func _() {
        /*
           freestanding comment
           aligned line
           */
}

func _() {
        /*
           freestanding comment
           aligned line */
}

func _() {
        /*
                freestanding comment
                aligned line
        */
}

func _() {
        /*
                freestanding comment
                aligned line
                */
}

func _() {
        /*
                freestanding comment
                aligned line */
}

/*
 * line
 * of
 * stars
 */

/* another line
 * of
 * stars */

/*      and another line
 *      of
 *      stars */

/* a line of
 * stars */

/*      and another line of
 *      stars */

/* a line of stars
*/

/*      and another line of
*/

/* a line of stars
 */

/*      and another line of
 */

/*
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) {
}

func _(/* no params */) {}

func _() {
        f(/* no args */)
}

func (/* comment1 */ T /* comment2 */) _() {}

func _() { /* one-line functions with comments are formatted as multi-line functions */ }

func _() {
        _ = 0
        /* closing curly brace should be on new line */ }

func _() {
        _ = []int{0, 1 /* don't introduce a newline after this comment - was issue 1365 */}
}


// Comments immediately adjacent to punctuation (for which the go/printer
// may only have estimated position information) must remain after the punctuation.
func _() {
        _ = T{
                1,    // comment after comma
                2,    /* comment after comma */
                3  ,  // comment after comma
        }
        _ = T{
                1  ,// comment after comma
                2  ,/* comment after comma */
                3,// comment after comma
        }
        _ = T{
                /* comment before literal */1,
                2/* comment before comma - ok to move after comma */,
                3  /* comment before comma - ok to move after comma */  ,
        }

        for
                i=0;// comment after semicolon
                i<9;/* comment after semicolon */
                i++{// comment after opening curly brace
        }

        // TODO(gri) the last comment in this example should be aligned */
        for
                i=0;// comment after semicolon
                i<9/* comment before semicolon - ok to move after semicolon */;
                i++ /* comment before opening curly brace */ {
        }
}


// 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 and should be followed by a newline */

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.