github.com/bir3/gocompiler@v0.9.2202/src/cmd/gocmd/internal/modindex/index_format.txt (about) 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 }