github.com/c9s/go@v0.0.0-20180120015821-984e81f64e0c/src/cmd/doc/testdata/pkg.go (about)

     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  )