blob: c74b1d458b0b4cb61a1962df6deb62e9cf2083d1 [file] [log] [blame]
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 null-terminated. String offsets are relative to the start of the string table.
Bools are written as uint32s: 0 for false and 1 for true.
The following is the format for a full module:
“go index v0\n”
str uint32 - offset of string table
n uint32 - number of packages
dirnames [n]uint32 - offsets to package names in string table; names sorted by raw string
packages [n]uint32 - offset where package begins
for each RawPackage:
error uint32 - string offset // error is produced by fsys.ReadDir or fmt.Errorf
path uint32 - string offset
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
name - string offset
synopsis - 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) numEmbeds uint32
for each embed:
pattern - string offset
position - file, offset, line, column - uint32
[string table]
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
}