| This file documents the index format that is read and written by this package. |
| The index format is an encoding of a series of RawPackage structs |
| |
| Field names refer to fields on RawPackage and rawFile. |
| The file uses little endian encoding for the uint32s. |
| Strings are written into the string table at the end of the file. |
| Each string is prefixed with a uvarint-encoded length. |
| Bools are written as uint32s: 0 for false and 1 for true. |
| |
| The following is the format for a full module: |
| |
| “go index v2\n” |
| str uint32 - offset of string table |
| n uint32 - number of packages |
| for each rawPackage: |
| dirname - string offset |
| package - offset where package begins |
| for each rawPackage: |
| error uint32 - string offset // error is produced by fsys.ReadDir or fmt.Errorf |
| dir uint32 - string offset (directory path relative to module root) |
| len(sourceFiles) uint32 |
| sourceFiles [n]uint32 - offset to source file (relative to start of index file) |
| for each sourceFile: |
| error - string offset // error is either produced by fmt.Errorf,errors.New or is io.EOF |
| 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 |
| synopsis - string offset |
| name - string offset |
| pkgName - string offset |
| ignoreFile - int32 bool // report the file in Ignored(Go|Other)Files because there was an error reading it or parsing its build constraints. |
| binaryOnly uint32 bool |
| cgoDirectives string offset // the #cgo directive lines in the comment on import "C" |
| goBuildConstraint - string offset |
| len(plusBuildConstraints) - uint32 |
| plusBuildConstraints - [n]uint32 (string offsets) |
| len(imports) uint32 |
| for each rawImport: |
| path - string offset |
| position - file, offset, line, column - uint32 |
| len(embeds) uint32 |
| for each embed: |
| pattern - string offset |
| position - file, offset, line, column - uint32 |
| len(directives) uint32 |
| for each directive: |
| text - string offset |
| position - file, offset, line, column - uint32 |
| [string table] |
| 0xFF (marker) |
| |
| The following is the format for a single indexed package: |
| |
| “go index v0\n” |
| str uint32 - offset of string table |
| for the single RawPackage: |
| [same RawPackage format as above] |
| [string table] |
| |
| The following is the definition of the json-serialized parseError struct: |
| |
| type parseError struct { |
| ErrorList *scanner.ErrorList // non-nil if the error was an ErrorList, nil otherwise |
| ErrorString string // non-empty for all other cases |
| } |