Documentation ¶
Overview ¶
Package codegen contains shared utilities for generating code.
Index ¶
- func AssertStructUnchanged(t *types.Struct, tname, ctx string, it *ImportTracker) []byte
- func ContainsPointers(typ types.Type) bool
- func HasNoClone(structTag string) bool
- func IsInvalid(t types.Type) bool
- func IsViewType(typ types.Type) bool
- func LoadTypes(buildTags string, pkgName string) (*packages.Package, map[string]*types.Named, error)
- func WritePackageFile(tool string, pkg *packages.Package, path string, it *ImportTracker, ...) error
- type ImportTracker
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AssertStructUnchanged ¶
func AssertStructUnchanged(t *types.Struct, tname, ctx string, it *ImportTracker) []byte
AssertStructUnchanged generates code that asserts at compile time that type t is unchanged. thisPkg is the package containing t. tname is the named type corresponding to t. ctx is a single-word context for this assertion, such as "Clone". If non-nil, AssertStructUnchanged will add elements to imports for each package path that the caller must import for the returned code to compile.
func ContainsPointers ¶
ContainsPointers reports whether typ contains any pointers, either explicitly or implicitly. It has special handling for some types that contain pointers that we know are free from memory aliasing/mutation concerns.
func HasNoClone ¶
HasNoClone reports whether the provided tag has `codegen:noclone`.
func IsInvalid ¶
IsInvalid reports whether the provided type is invalid. It is used to allow codegeneration to run even when the target files have build errors or are missing views.
func IsViewType ¶
IsViewType reports whether the provided typ is a View.
func LoadTypes ¶
func LoadTypes(buildTags string, pkgName string) (*packages.Package, map[string]*types.Named, error)
LoadTypes returns all named types in pkgName, keyed by their type name.
func WritePackageFile ¶
func WritePackageFile(tool string, pkg *packages.Package, path string, it *ImportTracker, contents *bytes.Buffer) error
WritePackageFile adds a file with the provided imports and contents to package. The tool param is used to identify the tool that generated package file.
Types ¶
type ImportTracker ¶
type ImportTracker struct {
// contains filtered or unexported fields
}
ImportTracker provides a mechanism to track and build import paths.
func NewImportTracker ¶
func NewImportTracker(thisPkg *types.Package) *ImportTracker
func (*ImportTracker) Import ¶
func (it *ImportTracker) Import(pkg string)
func (*ImportTracker) QualifiedName ¶
func (it *ImportTracker) QualifiedName(t types.Type) string
QualifiedName returns the string representation of t in the package.
func (*ImportTracker) Write ¶
func (it *ImportTracker) Write(w io.Writer)
Write prints all the tracked imports in a single import block to w.