Home | History | Annotate | Download | only in testdata
      1 // Copyright 2015 The Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 // Package comment.
      6 package pkg
      7 
      8 // Constants
      9 
     10 // Comment about exported constant.
     11 const ExportedConstant = 1
     12 
     13 // Comment about internal constant.
     14 const internalConstant = 2
     15 
     16 // Comment about block of constants.
     17 const (
     18 	// Comment before ConstOne.
     19 	ConstOne   = 1
     20 	ConstTwo   = 2 // Comment on line with ConstTwo.
     21 	constThree = 3 // Comment on line with constThree.
     22 )
     23 
     24 // Const block where first entry is unexported.
     25 const (
     26 	constFour = iota
     27 	ConstFive
     28 	ConstSix
     29 )
     30 
     31 // Variables
     32 
     33 // Comment about exported variable.
     34 var ExportedVariable = 1
     35 
     36 // Comment about internal variable.
     37 var internalVariable = 2
     38 
     39 // Comment about block of variables.
     40 var (
     41 	// Comment before VarOne.
     42 	VarOne   = 1
     43 	VarTwo   = 2 // Comment on line with VarTwo.
     44 	varThree = 3 // Comment on line with varThree.
     45 )
     46 
     47 // Var block where first entry is unexported.
     48 var (
     49 	varFour = 4
     50 	VarFive = 5
     51 	varSix  = 6
     52 )
     53 
     54 // Comment about exported function.
     55 func ExportedFunc(a int) bool
     56 
     57 // Comment about internal function.
     58 func internalFunc(a int) bool
     59 
     60 // Comment about exported type.
     61 type ExportedType struct {
     62 	// Comment before exported field.
     63 	ExportedField                   int // Comment on line with exported field.
     64 	unexportedField                 int // Comment on line with unexported field.
     65 	ExportedEmbeddedType                // Comment on line with exported embedded field.
     66 	*ExportedEmbeddedType               // Comment on line with exported embedded *field.
     67 	*qualified.ExportedEmbeddedType     // Comment on line with exported embedded *selector.field.
     68 	unexportedType                      // Comment on line with unexported embedded field.
     69 	*unexportedType                     // Comment on line with unexported embedded *field.
     70 	io.Reader                           // Comment on line with embedded Reader.
     71 	error                               // Comment on line with embedded error.
     72 }
     73 
     74 // Comment about exported method.
     75 func (ExportedType) ExportedMethod(a int) bool {
     76 	return true
     77 }
     78 
     79 // Comment about unexported method.
     80 func (ExportedType) unexportedMethod(a int) bool {
     81 	return true
     82 }
     83 
     84 type ExportedStructOneField struct {
     85 	OnlyField int // the only field
     86 }
     87 
     88 // Constants tied to ExportedType. (The type is a struct so this isn't valid Go,
     89 // but it parses and that's all we need.)
     90 const (
     91 	ExportedTypedConstant ExportedType = iota
     92 )
     93 
     94 // Comment about constructor for exported type.
     95 func ExportedTypeConstructor() *ExportedType {
     96 	return nil
     97 }
     98 
     99 const unexportedTypedConstant ExportedType = 1 // In a separate section to test -u.
    100 
    101 // Comment about exported interface.
    102 type ExportedInterface interface {
    103 	// Comment before exported method.
    104 	ExportedMethod()   // Comment on line with exported method.
    105 	unexportedMethod() // Comment on line with unexported method.
    106 	io.Reader          // Comment on line with embedded Reader.
    107 	error              // Comment on line with embedded error.
    108 }
    109 
    110 // Comment about unexported type.
    111 type unexportedType int
    112 
    113 func (unexportedType) ExportedMethod() bool {
    114 	return true
    115 }
    116 
    117 func (unexportedType) unexportedMethod() bool {
    118 	return true
    119 }
    120 
    121 // Constants tied to unexportedType.
    122 const (
    123 	ExportedTypedConstant_unexported unexportedType = iota
    124 )
    125 
    126 const unexportedTypedConstant unexportedType = 1 // In a separate section to test -u.
    127 
    128 // For case matching.
    129 const CaseMatch = 1
    130 const Casematch = 2
    131 
    132 func ReturnUnexported() unexportedType { return 0 }
    133 func ReturnExported() ExportedType     { return ExportedType{} }
    134 
    135 const MultiLineConst = `
    136 	MultiLineString1
    137 	MultiLineString2
    138 	MultiLineString3
    139 `
    140 
    141 func MultiLineFunc(x interface {
    142 	MultiLineMethod1() int
    143 	MultiLineMethod2() int
    144 	MultiLineMethod3() int
    145 }) (r struct {
    146 	MultiLineField1 int
    147 	MultiLineField2 int
    148 	MultiLineField3 int
    149 }) {
    150 	return r
    151 }
    152 
    153 var MultiLineVar = map[struct {
    154 	MultiLineField1 string
    155 	MultiLineField2 uint64
    156 }]struct {
    157 	MultiLineField3 error
    158 	MultiLineField2 error
    159 }{
    160 	{"FieldVal1", 1}: {},
    161 	{"FieldVal2", 2}: {},
    162 	{"FieldVal3", 3}: {},
    163 }
    164 
    165 const (
    166 	_, _ uint64 = 2 * iota, 1 << iota
    167 	constLeft1, constRight1
    168 	ConstLeft2, constRight2
    169 	constLeft3, ConstRight3
    170 	ConstLeft4, ConstRight4
    171 )
    172 
    173 const (
    174 	ConstGroup1 unexportedType = iota
    175 	ConstGroup2
    176 	ConstGroup3
    177 )
    178 
    179 const ConstGroup4 ExportedType = ExportedType{}
    180 
    181 func newLongLine(ss ...string)
    182 
    183 var LongLine = newLongLine(
    184 	"someArgument1",
    185 	"someArgument2",
    186 	"someArgument3",
    187 	"someArgument4",
    188 	"someArgument5",
    189 	"someArgument6",
    190 	"someArgument7",
    191 	"someArgument8",
    192 )
    193 
    194 type T2 int
    195 
    196 type T1 = T2
    197 
    198 const (
    199 	Duplicate = iota
    200 	duplicate
    201 )
    202