Source file src/cmd/compile/internal/typecheck/bexport.go

     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 typecheck
     6  
     7  import "cmd/compile/internal/types"
     8  
     9  // ----------------------------------------------------------------------------
    10  // Export format
    11  
    12  // Tags. Must be < 0.
    13  const (
    14  	// Objects
    15  	packageTag = -(iota + 1)
    16  	constTag
    17  	typeTag
    18  	varTag
    19  	funcTag
    20  	endTag
    21  
    22  	// Types
    23  	namedTag
    24  	arrayTag
    25  	sliceTag
    26  	dddTag
    27  	structTag
    28  	pointerTag
    29  	signatureTag
    30  	interfaceTag
    31  	mapTag
    32  	chanTag
    33  
    34  	// Values
    35  	falseTag
    36  	trueTag
    37  	int64Tag
    38  	floatTag
    39  	fractionTag // not used by gc
    40  	complexTag
    41  	stringTag
    42  	nilTag
    43  	unknownTag // not used by gc (only appears in packages with errors)
    44  
    45  	// Type aliases
    46  	aliasTag
    47  )
    48  
    49  var predecl []*types.Type // initialized lazily
    50  
    51  func predeclared() []*types.Type {
    52  	if predecl == nil {
    53  		// initialize lazily to be sure that all
    54  		// elements have been initialized before
    55  		predecl = []*types.Type{
    56  			// basic types
    57  			types.Types[types.TBOOL],
    58  			types.Types[types.TINT],
    59  			types.Types[types.TINT8],
    60  			types.Types[types.TINT16],
    61  			types.Types[types.TINT32],
    62  			types.Types[types.TINT64],
    63  			types.Types[types.TUINT],
    64  			types.Types[types.TUINT8],
    65  			types.Types[types.TUINT16],
    66  			types.Types[types.TUINT32],
    67  			types.Types[types.TUINT64],
    68  			types.Types[types.TUINTPTR],
    69  			types.Types[types.TFLOAT32],
    70  			types.Types[types.TFLOAT64],
    71  			types.Types[types.TCOMPLEX64],
    72  			types.Types[types.TCOMPLEX128],
    73  			types.Types[types.TSTRING],
    74  
    75  			// basic type aliases
    76  			types.ByteType,
    77  			types.RuneType,
    78  
    79  			// error
    80  			types.ErrorType,
    81  
    82  			// untyped types
    83  			types.UntypedBool,
    84  			types.UntypedInt,
    85  			types.UntypedRune,
    86  			types.UntypedFloat,
    87  			types.UntypedComplex,
    88  			types.UntypedString,
    89  			types.Types[types.TNIL],
    90  
    91  			// package unsafe
    92  			types.Types[types.TUNSAFEPTR],
    93  
    94  			// invalid type (package contains errors)
    95  			types.Types[types.Txxx],
    96  
    97  			// any type, for builtin export data
    98  			types.Types[types.TANY],
    99  
   100  			// comparable
   101  			types.ComparableType,
   102  
   103  			// any
   104  			types.AnyType,
   105  		}
   106  	}
   107  	return predecl
   108  }
   109  

View as plain text