Text file src/cmd/go/internal/modindex/index_format.txt

     1  This file documents the index format that is read and written by this package.
     2  The index format is an encoding of a series of RawPackage structs
     3  
     4  Field names refer to fields on RawPackage and rawFile.
     5  The file uses little endian encoding for the uint32s.
     6  Strings are written into the string table at the end of the file.
     7  Each string is prefixed with a uvarint-encoded length.
     8  Bools are written as uint32s: 0 for false and 1 for true.
     9  
    10  The following is the format for a full module:
    11  
    12  “go index v2\n”
    13  str uint32 - offset of string table
    14  n uint32 - number of packages
    15  for each rawPackage:
    16  	dirname - string offset
    17  	package - offset where package begins
    18  for each rawPackage:
    19  	error uint32 - string offset // error is produced by fsys.ReadDir or fmt.Errorf
    20  	dir uint32 - string offset (directory path relative to module root)
    21  	len(sourceFiles) uint32
    22  	sourceFiles [n]uint32 - offset to source file (relative to start of index file)
    23  	for each sourceFile:
    24  		error - string offset // error is either produced by fmt.Errorf,errors.New or is io.EOF
    25  		parseError - string offset // if non-empty, a json-encoded parseError struct (see below). Is either produced by io.ReadAll,os.ReadFile,errors.New or is scanner.Error,scanner.ErrorList
    26  		synopsis - string offset
    27  		name - string offset
    28  		pkgName - string offset
    29  		ignoreFile - int32 bool // report the file in Ignored(Go|Other)Files because there was an error reading it or parsing its build constraints.
    30  		binaryOnly uint32 bool
    31  		cgoDirectives string offset // the #cgo directive lines in the comment on import "C"
    32  		goBuildConstraint  - string offset
    33  		len(plusBuildConstraints) - uint32
    34  		plusBuildConstraints - [n]uint32 (string offsets)
    35  		len(imports) uint32
    36  		for each rawImport:
    37  			path - string offset
    38  			position - file, offset, line, column - uint32
    39  		len(embeds) uint32
    40  		for each embed:
    41  			pattern - string offset
    42  			position - file, offset, line, column - uint32
    43  		len(directives) uint32
    44  		for each directive:
    45  			text - string offset
    46  			position - file, offset, line, column - uint32
    47  [string table]
    48  0xFF (marker)
    49  
    50  The following is the format for a single indexed package:
    51  
    52  “go index v0\n”
    53  str uint32 - offset of string table
    54  for the single RawPackage:
    55  	[same RawPackage format as above]
    56  [string table]
    57  
    58  The following is the definition of the json-serialized parseError struct:
    59  
    60  type parseError struct {
    61  	ErrorList *scanner.ErrorList // non-nil if the error was an ErrorList, nil otherwise
    62  	ErrorString string // non-empty for all other cases
    63  }
    64  

View as plain text