// Ref makes a reference to the given type. It can only be used for e.g. // passing to namers. func Ref(packageName, typeName string) *Type { … } type Name … // String returns the name formatted as a string. func (n Name) String() string { … } // ParseFullyQualifiedName parses a name like k8s.io/kubernetes/pkg/api.Pod into a Name. func ParseFullyQualifiedName(fqn string) Name { … } type Kind … const Builtin … const Struct … const Map … const Slice … const Pointer … const Alias … const Interface … const Array … const Chan … const Func … const DeclarationOf … const Unknown … const Unsupported … const TypeParam … const Protobuf … type Package … // Has returns true if the given name references a type known to this package. func (p *Package) Has(name string) bool { … } // Type gets the given Type in this Package. If the Type is not already // defined, this will add it and return the new Type value. The caller is // expected to finish initialization. func (p *Package) Type(typeName string) *Type { … } // Function gets the given function Type in this Package. If the function is // not already defined, this will add it. If a function is added, it's the // caller's responsibility to finish construction of the function by setting // Underlying to the correct type. func (p *Package) Function(funcName string) *Type { … } // Variable gets the given variable Type in this Package. If the variable is // not already defined, this will add it. If a variable is added, it's the caller's // responsibility to finish construction of the variable by setting Underlying // to the correct type. func (p *Package) Variable(varName string) *Type { … } // Constant gets the given constant Type in this Package. If the constant is // not already defined, this will add it. If a constant is added, it's the caller's // responsibility to finish construction of the constant by setting Underlying // to the correct type. func (p *Package) Constant(constName string) *Type { … } // HasImport returns true if p imports packageName. Package names include the // package directory. func (p *Package) HasImport(packageName string) bool { … } type Universe … // Type returns the canonical type for the given fully-qualified name. Builtin // types will always be found, even if they haven't been explicitly added to // the map. If a non-existing type is requested, this will create (a marker for) // it. func (u Universe) Type(n Name) *Type { … } // Function returns the canonical function for the given fully-qualified name. // If a non-existing function is requested, this will create (a marker for) it. // If a marker is created, it's the caller's responsibility to finish // construction of the function by setting Underlying to the correct type. func (u Universe) Function(n Name) *Type { … } // Variable returns the canonical variable for the given fully-qualified name. // If a non-existing variable is requested, this will create (a marker for) it. // If a marker is created, it's the caller's responsibility to finish // construction of the variable by setting Underlying to the correct type. func (u Universe) Variable(n Name) *Type { … } // Constant returns the canonical constant for the given fully-qualified name. // If a non-existing constant is requested, this will create (a marker for) it. // If a marker is created, it's the caller's responsibility to finish // construction of the constant by setting Underlying to the correct type. func (u Universe) Constant(n Name) *Type { … } // AddImports registers import lines for packageName. May be called multiple times. // You are responsible for canonicalizing all package paths. func (u Universe) AddImports(packagePath string, importPaths ...string) { … } // Package returns the Package for the given path. // If a non-existing package is requested, this will create (a marker for) it. // If a marker is created, it's the caller's responsibility to finish // construction of the package. func (u Universe) Package(packagePath string) *Package { … } type Type … // String returns the name of the type. func (t *Type) String() string { … } // IsPrimitive returns whether the type is a built-in type or is an alias to a // built-in type. For example: strings and aliases of strings are primitives, // structs are not. func (t *Type) IsPrimitive() bool { … } // IsAssignable returns whether the type is deep-assignable. For example, // slices and maps and pointers are shallow copies, but ints and strings are // complete. func (t *Type) IsAssignable() bool { … } // IsAnonymousStruct returns true if the type is an anonymous struct or an alias // to an anonymous struct. func (t *Type) IsAnonymousStruct() bool { … } type Member … // String returns the name and type of the member. func (m Member) String() string { … } type ParamResult … type Signature … var String … var Int64 … var Int32 … var Int16 … var Int … var Uint64 … var Uint32 … var Uint16 … var Uint … var Uintptr … var Float64 … var Float32 … var Float … var Bool … var Byte … var builtins … func IsInteger(t *Type) bool { … }