Source File
version.go
Belonging Package
golang.org/x/tools/internal/pkgbits
// Copyright 2024 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.package pkgbits// Version indicates a version of a unified IR bitstream.// Each Version indicates the addition, removal, or change of// new data in the bitstream.//// These are serialized to disk and the interpretation remains fixed.type Version uint32const (// V0: initial prototype.//// All data that is not assigned a Field is in version V0// and has not been deprecated.V0 Version = iota// V1: adds the Flags uint32 wordV1// V2: removes unused legacy fields and supports type parameters for aliases.// - remove the legacy "has init" bool from the public root// - remove obj's "derived func instance" bool// - add a TypeParamNames field to ObjAlias// - remove derived info "needed" boolV2numVersions = iota)// Field denotes a unit of data in the serialized unified IR bitstream.// It is conceptually a like field in a structure.//// We only really need Fields when the data may or may not be present// in a stream based on the Version of the bitstream.//// Unlike much of pkgbits, Fields are not serialized and// can change values as needed.type Field intconst (// Flags in a uint32 in the header of a bitstream// that is used to indicate whether optional features are enabled.Flags Field = iota// Deprecated: HasInit was a bool indicating whether a package// has any init functions.HasInit// Deprecated: DerivedFuncInstance was a bool indicating// whether an object was a function instance.DerivedFuncInstance// ObjAlias has a list of TypeParamNames.AliasTypeParamNames// Deprecated: DerivedInfoNeeded was a bool indicating// whether a type was a derived type.DerivedInfoNeedednumFields = iota)// introduced is the version a field was added.var introduced = [numFields]Version{Flags: V1,AliasTypeParamNames: V2,}// removed is the version a field was removed in or 0 for fields// that have not yet been deprecated.// (So removed[f]-1 is the last version it is included in.)var removed = [numFields]Version{HasInit: V2,DerivedFuncInstance: V2,DerivedInfoNeeded: V2,}// Has reports whether field f is present in a bitstream at version v.func ( Version) ( Field) bool {return introduced[] <= && ( < removed[] || removed[] == V0)}
The pages are generated with Golds v0.7.6. (GOOS=linux GOARCH=amd64)