Documentation ¶
Index ¶
- Constants
- Variables
- func ASTFile(pkg *Package, fname ...string) *ast.Filedeprecated
- func AssignableConv(pkg *Package, V, T types.Type, pv *Element) bool
- func AssignableTo(pkg *Package, V, T types.Type) bool
- func CPubName(name string) string
- func CheckOverloadFunc(sig *types.Signature) (funcs []types.Object, ok bool)deprecated
- func CheckOverloadMethod(sig *types.Signature) (methods []types.Object, ok bool)deprecated
- func CheckSigFuncEx(sig *types.Signature) (types.Type, bool)
- func CheckSigFuncExObjects(sig *types.Signature) (typ types.Type, objs []types.Object)
- func CommentedASTFile(pkg *Package, fname ...string) *printer.CommentedNodesdeprecated
- func ComparableTo(pkg *Package, varg, targ *Element) bool
- func ConvertibleTo(pkg *Package, V, T types.Type) bool
- func Default(pkg *Package, t types.Type) types.Type
- func DefaultConv(pkg *Package, t types.Type, pv *Element) types.Type
- func DerefType(typ types.Type) (types.Type, bool)
- func HasAutoProperty(typ types.Type) bool
- func InitBuiltin(pkg *Package, builtin *types.Package, conf *Config)
- func InitThisGopPkg(pkg *types.Package)
- func InsertStmtFront(body *ast.BlockStmt, stmt ast.Stmt)
- func IsCSignature(sig *types.Signature) bool
- func IsFunc(t types.Type) bool
- func IsMethodRecv(recv *types.Var) bool
- func IsTypeEx(t types.Type) (ok bool)
- func Lookup(scope *types.Scope, name string) (obj types.Object)
- func LookupParent(scope *types.Scope, name string, pos token.Pos) (at *types.Scope, obj types.Object)
- func NewArray(elem types.Type, len int64) types.Type
- func NewCSignature(params, results *types.Tuple, variadic bool) *types.Signature
- func NewChan(dir types.ChanDir, elem types.Type) types.Type
- func NewInstruction(pos token.Pos, pkg *types.Package, name string, instr Instruction) *types.TypeName
- func NewMap(key, elem types.Type) types.Type
- func NewOverloadFunc(pos token.Pos, pkg *types.Package, name string, funcs ...types.Object) *types.Func
- func NewOverloadMethod(typ *types.Named, pos token.Pos, pkg *types.Package, name string, ...) *types.Func
- func NewOverloadNamed(pos token.Pos, pkg *types.Package, name string, typs ...*types.Named) *types.TypeName
- func NewPointer(elem types.Type) types.Type
- func NewPosNode(pos token.Pos, end ...token.Pos) ast.Node
- func NewSignature(recv *types.Var, params, results *types.Tuple, variadic bool) *types.Signature
- func NewSlice(elem types.Type) types.Type
- func NewSubst(pos token.Pos, pkg *types.Package, name string, real types.Object) *types.Var
- func NewTemplateRecvMethod(typ *types.Named, pos token.Pos, pkg *types.Package, name string, ...) *types.Func
- func SetDebug(dbgFlags int)
- func TypeAST(pkg *Package, typ types.Type) ast.Expr
- func WriteFile(file string, pkg *Package, fname ...string) (err error)deprecated
- func WriteTo(dst io.Writer, pkg *Package, fname ...string) (err error)deprecated
- type BitField
- type BitFields
- type CodeBuilder
- func (p *CodeBuilder) AliasType(name string, typ types.Type, src ...ast.Node) *types.Named
- func (p *CodeBuilder) ArrayLit(typ types.Type, arity int, keyVal ...bool) *CodeBuilder
- func (p *CodeBuilder) ArrayLitEx(typ types.Type, arity int, keyVal bool, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Assign(lhs int, rhs ...int) *CodeBuilder
- func (p *CodeBuilder) AssignOp(op token.Token, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) AssignWith(lhs, rhs int, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) BackupComments() (*ast.CommentGroup, bool)
- func (p *CodeBuilder) BinaryOp(op token.Token, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Block(src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Break(l *Label) *CodeBuilder
- func (p *CodeBuilder) Call(n int, ellipsis ...bool) *CodeBuilder
- func (p *CodeBuilder) CallInlineClosureStart(sig *types.Signature, arity int, ellipsis bool) *CodeBuilder
- func (p *CodeBuilder) CallWith(n int, flags InstrFlags, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) CallWithEx(n int, flags InstrFlags, src ...ast.Node) error
- func (p *CodeBuilder) Case(n int, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) CommCase(n int, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Comments() *ast.CommentGroup
- func (p *CodeBuilder) CompareNil(op token.Token, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Continue(l *Label) *CodeBuilder
- func (p *CodeBuilder) Debug(dbg func(cb *CodeBuilder)) *CodeBuilder
- func (p *CodeBuilder) Defer() *CodeBuilder
- func (p *CodeBuilder) DefineVarStart(pos token.Pos, names ...string) *CodeBuilder
- func (p *CodeBuilder) Elem(src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) ElemRef(src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Else(src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) End(src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) EndConst() *Element
- func (p *CodeBuilder) EndInit(n int) *CodeBuilder
- func (p *CodeBuilder) EndStmt() *CodeBuilder
- func (p *CodeBuilder) Fallthrough() *CodeBuilder
- func (p *CodeBuilder) For(src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) ForRange(names ...string) *CodeBuilder
- func (p *CodeBuilder) ForRangeEx(names []string, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Func() *Func
- func (p *CodeBuilder) Get(idx int) *Element
- func (p *CodeBuilder) Go() *CodeBuilder
- func (p *CodeBuilder) Goto(l *Label) *CodeBuilder
- func (p *CodeBuilder) If(src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) InVBlock() bool
- func (p *CodeBuilder) IncDec(op token.Token, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Index(nidx int, twoValue bool, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) IndexRef(nidx int, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) InternalStack() *InternalStack
- func (p *CodeBuilder) Label(l *Label) *CodeBuilder
- func (p *CodeBuilder) LookupLabel(name string) (l *Label, ok bool)
- func (p *CodeBuilder) MapLit(typ types.Type, arity int, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Member(name string, flag MemberFlag, src ...ast.Node) (kind MemberKind, err error)
- func (p *CodeBuilder) MemberRef(name string, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) MemberVal(name string, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) NewAutoVar(pos token.Pos, name string, pv **types.Var) *CodeBuilder
- func (p *CodeBuilder) NewClosure(params, results *Tuple, variadic bool) *Func
- func (p *CodeBuilder) NewClosureWith(sig *types.Signature) *Func
- func (p *CodeBuilder) NewConstStart(typ types.Type, names ...string) *CodeBuilder
- func (p *CodeBuilder) NewLabel(pos token.Pos, name string) *Label
- func (p *CodeBuilder) NewType(name string, src ...ast.Node) *TypeDecl
- func (p *CodeBuilder) NewTypeDecls() (ret *TypeDefs, defineHere func())
- func (p *CodeBuilder) NewTypeDefs() *TypeDefs
- func (p *CodeBuilder) NewVar(typ types.Type, names ...string) *CodeBuilder
- func (p *CodeBuilder) NewVarStart(typ types.Type, names ...string) *CodeBuilder
- func (p *CodeBuilder) None() *CodeBuilder
- func (p *CodeBuilder) Pkg() *Package
- func (p *CodeBuilder) Post() *CodeBuilder
- func (p *CodeBuilder) RangeAssignThen(pos token.Pos) *CodeBuilder
- func (p *CodeBuilder) ResetInit()
- func (p *CodeBuilder) ResetStmt()
- func (p *CodeBuilder) Return(n int, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) ReturnErr(outer bool) *CodeBuilder
- func (p *CodeBuilder) Scope() *types.Scope
- func (p *CodeBuilder) Select(src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Send() *CodeBuilder
- func (p *CodeBuilder) SetBodyHandler(handle func(body *ast.BlockStmt, kind int)) *CodeBuilder
- func (p *CodeBuilder) SetComments(comments *ast.CommentGroup, once bool) *CodeBuilder
- func (p *CodeBuilder) Slice(slice3 bool, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) SliceLit(typ types.Type, arity int, keyVal ...bool) *CodeBuilder
- func (p *CodeBuilder) SliceLitEx(typ types.Type, arity int, keyVal bool, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Star(src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) StructLit(typ types.Type, arity int, keyVal bool, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Switch(src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Then(src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) Typ(typ types.Type, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) TypeAssert(typ types.Type, twoValue bool, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) TypeAssertThen() *CodeBuilder
- func (p *CodeBuilder) TypeCase(n int, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) TypeSwitch(name string, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) UnaryOp(op token.Token, params ...interface{}) *CodeBuilder
- func (p *CodeBuilder) UntypedBigInt(v *big.Int, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) UntypedBigRat(v *big.Rat, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) VBlock() *CodeBuilder
- func (p *CodeBuilder) Val(v interface{}, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) VarRef(ref interface{}, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) VarVal(name string, src ...ast.Node) *CodeBuilder
- func (p *CodeBuilder) ZeroLit(typ types.Type) *CodeBuilder
- type CodeError
- type Config
- type ConstDefs
- func (p *ConstDefs) New(fn F, iotav int, pos token.Pos, typ types.Type, names ...string) *ConstDefs
- func (p *ConstDefs) NewAt(at ValueAt, fn F, iotav int, pos token.Pos, typ types.Type, names ...string) *ConstDefs
- func (p *ConstDefs) NewPos() ValueAt
- func (p *ConstDefs) Next(iotav int, pos token.Pos, names ...string) *ConstDefs
- func (p *ConstDefs) NextAt(at ValueAt, fn F, iotav int, pos token.Pos, names ...string) *ConstDefs
- func (p *ConstDefs) SetComments(doc *ast.CommentGroup) *ConstDefs
- type Contract
- type Element
- type F
- type File
- type Func
- type ImportError
- type InstrFlags
- type Instruction
- type InternalStack
- type Label
- type LoadNamedFunc
- type MatchError
- type MemberFlag
- type MemberKind
- type NodeInterpreter
- type ObjectDocs
- type OverloadType
- type Package
- func (p *Package) ASTFile(fname ...string) *ast.File
- func (p *Package) AliasType(name string, typ types.Type, src ...ast.Node) *types.Nameddeprecated
- func (p *Package) Builtin() PkgRef
- func (p *Package) CB() *CodeBuilder
- func (p *Package) CommentedASTFile(fname ...string) *printer.CommentedNodes
- func (p *Package) ConstStart() *CodeBuilder
- func (p *Package) CurFile() *File
- func (p *Package) ExportFields(t *types.Named)
- func (p *Package) File(fname ...string) (file *File, ok bool)
- func (p *Package) ForEachFile(doSth func(fname string, file *File))
- func (p *Package) ForceImport(pkgPath string, src ...ast.Node)
- func (p *Package) Import(pkgPath string, src ...ast.Node) PkgRef
- func (p *Package) Instantiate(orig types.Type, targs []types.Type, src ...ast.Node) types.Type
- func (pkg *Package) MethodToFunc(typ types.Type, name string, src ...ast.Node) (ret *Element, err error)
- func (p *Package) NewAutoParam(name string) *Param
- func (p *Package) NewAutoParamEx(pos token.Pos, name string) *Param
- func (p *Package) NewConstDefs(scope *types.Scope) *ConstDefs
- func (p *Package) NewConstStart(scope *types.Scope, pos token.Pos, typ types.Type, names ...string) *CodeBuilderdeprecated
- func (p *Package) NewFunc(recv *Param, name string, params, results *Tuple, variadic bool) *Func
- func (p *Package) NewFuncDecl(pos token.Pos, name string, sig *types.Signature) *Func
- func (p *Package) NewFuncWith(pos token.Pos, name string, sig *types.Signature, recvTypePos func() token.Pos) (*Func, error)
- func (p *Package) NewParam(pos token.Pos, name string, typ types.Type) *Param
- func (p *Package) NewType(name string, src ...ast.Node) *TypeDecldeprecated
- func (p *Package) NewTypeDefs() *TypeDefs
- func (p *Package) NewVar(pos token.Pos, typ types.Type, names ...string) *VarDecldeprecated
- func (p *Package) NewVarDefs(scope *types.Scope) *VarDefs
- func (p *Package) NewVarEx(scope *types.Scope, pos token.Pos, typ types.Type, names ...string) *VarDecldeprecated
- func (p *Package) NewVarStart(pos token.Pos, typ types.Type, names ...string) *CodeBuilderdeprecated
- func (p *Package) Offsetsof(fields []*types.Var) []int64
- func (p *Package) RestoreCurFile(file *File) (old *File)
- func (p *Package) SetCurFile(fname string, createIfNotExists bool) (old *File, err error)
- func (p *Package) SetRedeclarable(allowRedecl bool)
- func (p *Package) SetVFields(t *types.Named, vft VFields)
- func (p *Package) Sizeof(typ types.Type) int64
- func (p *Package) TryImport(pkgPath string) PkgRef
- func (p *Package) Unsafe() PkgRef
- func (p *Package) VFields(t *types.Named) (vft VFields, ok bool)
- func (p *Package) WriteFile(file string, fname ...string) (err error)
- func (p *Package) WriteTo(dst io.Writer, fname ...string) (err error)
- type Param
- type PkgRef
- type Recorder
- type Ref
- type SubstTypedeprecated
- type TemplateFunc
- type TemplateParamType
- type TemplateSignature
- type Term
- type Tuple
- type TyFuncEx
- type TyInstruction
- type TyOverloadFunc
- type TyOverloadMethod
- type TyOverloadNamed
- type TyState
- type TySubst
- type TyTemplateRecvMethod
- type TyTypeEx
- type TypeDecl
- func (p *TypeDecl) Delete()
- func (p *TypeDecl) InitType(pkg *Package, typ types.Type, tparams ...*TypeParam) *types.Named
- func (p *TypeDecl) Inited() bool
- func (p *TypeDecl) SetComments(pkg *Package, doc *ast.CommentGroup) *TypeDecl
- func (p *TypeDecl) State() TyState
- func (p *TypeDecl) Type() *types.Named
- type TypeDefs
- type TypeParam
- type TypeParamList
- type TypeType
- type Union
- type UnionField
- type UnionFields
- func (p *UnionFields) At(i int) *UnionField
- func (p *UnionFields) FieldRef(cb *CodeBuilder, tfld *types.Named, name string, src ast.Node) MemberKind
- func (p *UnionFields) FindField(cb *CodeBuilder, tfld *types.Named, name string, arg *Element, src ast.Node) MemberKind
- func (p *UnionFields) Len() int
- type VFields
- type ValueAt
- type ValueDecl
- type VarDecl
- type VarDefs
- func (p *VarDefs) Delete(name string) error
- func (p *VarDefs) New(pos token.Pos, typ types.Type, names ...string) *VarDecl
- func (p *VarDefs) NewAndInit(fn F, pos token.Pos, typ types.Type, names ...string) *VarDefs
- func (p *VarDefs) NewAt(at ValueAt, pos token.Pos, typ types.Type, names ...string) *VarDecl
- func (p *VarDefs) NewPos() ValueAt
- func (p *VarDefs) SetComments(doc *ast.CommentGroup) *VarDefs
Constants ¶
const ( DbgFlagInstruction = 1 << iota DbgFlagImport DbgFlagMatch DbgFlagComments DbgFlagWriteFile DbgFlagSetDebug DbgFlagPersistCache DbgFlagAll = DbgFlagInstruction | DbgFlagImport | DbgFlagMatch | DbgFlagComments | DbgFlagWriteFile | DbgFlagSetDebug | DbgFlagPersistCache )
const ( FlagDepModGop = 1 << iota // depends module github.com/goplus/gop FlagDepModX // depends module github.com/qiniu/x )
Variables ¶
var ( TyByte = types.Universe.Lookup("byte").Type().(*types.Basic) TyRune = types.Universe.Lookup("rune").Type().(*types.Basic) )
var ( TyEmptyInterface = types.NewInterfaceType(nil, nil) TyError = types.Universe.Lookup("error").Type() )
var (
GeneratedHeader = "// Code generated by gox; DO NOT EDIT.\n\n"
)
GeneratedHeader is the default string that the source file generated by gox start with. Change it if you want to make it different.
Functions ¶
func AssignableConv ¶ added in v1.0.0
func AssignableTo ¶ added in v0.6.0
AssignableTo reports whether a value of type V is assignable to a variable of type T.
func CheckSigFuncEx ¶ added in v1.14.2
CheckSigFuncEx retrun hide recv type from func($overloadArgs ...interface{$overloadMethod()}) The return type can be OverloadType (*TyOverloadFunc, *TyOverloadMethod, *TyOverloadNamed) or *TyTemplateRecvMethod.
func CheckSigFuncExObjects ¶ added in v1.14.2
CheckSigFuncExObjects retruns hide recv type and objects from func($overloadArgs ...interface{$overloadMethod()}) The return type can be OverloadType (*TyOverloadFunc, *TyOverloadMethod, *TyOverloadNamed) or *TyTemplateRecvMethod.
func CommentedASTFile
deprecated
added in
v1.7.10
func CommentedASTFile(pkg *Package, fname ...string) *printer.CommentedNodes
CommentedASTFile returns commented AST of a file by its fname. If fname is not provided, it returns AST of the default (NOT current) file.
Deprecated: Use pkg.CommentedASTFile instead.
func ComparableTo ¶ added in v0.6.3
func Default ¶ added in v0.8.13
Default returns the default "typed" type for an "untyped" type; it returns the incoming type for all other types. The default type for untyped nil is untyped nil.
func DefaultConv ¶ added in v1.0.0
func HasAutoProperty ¶ added in v1.8.6
HasAutoProperty checks if specified type is a function without parameters or not.
func InitBuiltin ¶ added in v1.7.6
func InitThisGopPkg ¶ added in v1.14.2
InitThisGopPkg initializes a Go+ package.
func IsCSignature ¶ added in v1.10.11
IsCSignature checks a prototype is C function or not.
func IsMethodRecv ¶ added in v1.11.30
func LookupParent ¶ added in v1.10.9
func NewArray ¶ added in v0.3.0
NewArray returns a new array type for the given element type and length. A negative length indicates an unknown length.
func NewCSignature ¶ added in v1.10.11
NewCSignature creates prototype of a C function.
func NewChan ¶ added in v0.3.0
NewChan returns a new channel type for the given direction and element type.
func NewInstruction ¶ added in v0.7.6
func NewOverloadFunc ¶ added in v0.3.0
func NewOverloadFunc(pos token.Pos, pkg *types.Package, name string, funcs ...types.Object) *types.Func
NewOverloadFunc creates an overload func.
func NewOverloadMethod ¶ added in v1.0.2
func NewOverloadMethod(typ *types.Named, pos token.Pos, pkg *types.Package, name string, methods ...types.Object) *types.Func
NewOverloadMethod creates an overload method.
func NewOverloadNamed ¶ added in v1.14.0
func NewPointer ¶ added in v0.3.0
NewPointer returns a new pointer type for the given element (base) type.
func NewSignature ¶ added in v0.3.0
NewSignature returns a new function type for the given receiver, parameters, and results, either of which may be nil. If variadic is set, the function is variadic, it must have at least one parameter, and the last parameter must be of unnamed slice type.
func NewTemplateRecvMethod ¶ added in v1.7.0
func NewTemplateRecvMethod(typ *types.Named, pos token.Pos, pkg *types.Package, name string, fn types.Object) *types.Func
NewTemplateRecvMethod - https://github.com/goplus/gop/issues/811
Types ¶
type BitFields ¶ added in v1.9.10
type BitFields struct {
// contains filtered or unexported fields
}
func NewBitFields ¶ added in v1.9.10
func (*BitFields) FieldRef ¶ added in v1.9.10
func (p *BitFields) FieldRef(cb *CodeBuilder, t *types.Named, name string, src ast.Node) MemberKind
type CodeBuilder ¶ added in v0.2.0
type CodeBuilder struct {
// contains filtered or unexported fields
}
CodeBuilder type
func (*CodeBuilder) ArrayLit ¶ added in v0.6.0
func (p *CodeBuilder) ArrayLit(typ types.Type, arity int, keyVal ...bool) *CodeBuilder
ArrayLit func
func (*CodeBuilder) ArrayLitEx ¶ added in v1.11.38
func (p *CodeBuilder) ArrayLitEx(typ types.Type, arity int, keyVal bool, src ...ast.Node) *CodeBuilder
ArrayLitEx func
func (*CodeBuilder) Assign ¶ added in v0.2.0
func (p *CodeBuilder) Assign(lhs int, rhs ...int) *CodeBuilder
Assign func
func (*CodeBuilder) AssignOp ¶ added in v0.8.82
func (p *CodeBuilder) AssignOp(op token.Token, src ...ast.Node) *CodeBuilder
AssignOp func
func (*CodeBuilder) AssignWith ¶ added in v0.9.20
func (p *CodeBuilder) AssignWith(lhs, rhs int, src ...ast.Node) *CodeBuilder
AssignWith func
func (*CodeBuilder) BackupComments ¶ added in v1.9.7
func (p *CodeBuilder) BackupComments() (*ast.CommentGroup, bool)
func (*CodeBuilder) BinaryOp ¶ added in v0.2.0
func (p *CodeBuilder) BinaryOp(op token.Token, src ...ast.Node) *CodeBuilder
BinaryOp func
func (*CodeBuilder) Block ¶ added in v1.4.5
func (p *CodeBuilder) Block(src ...ast.Node) *CodeBuilder
Block starts a block statement.
func (*CodeBuilder) Break ¶ added in v0.8.4
func (p *CodeBuilder) Break(l *Label) *CodeBuilder
Break func
func (*CodeBuilder) Call ¶ added in v0.2.0
func (p *CodeBuilder) Call(n int, ellipsis ...bool) *CodeBuilder
Call func
func (*CodeBuilder) CallInlineClosureStart ¶ added in v0.8.14
func (p *CodeBuilder) CallInlineClosureStart(sig *types.Signature, arity int, ellipsis bool) *CodeBuilder
CallInlineClosureStart func
func (*CodeBuilder) CallWith ¶ added in v0.9.20
func (p *CodeBuilder) CallWith(n int, flags InstrFlags, src ...ast.Node) *CodeBuilder
CallWith always panics on error, while CallWithEx returns err if match function call failed.
func (*CodeBuilder) CallWithEx ¶ added in v1.14.12
func (p *CodeBuilder) CallWithEx(n int, flags InstrFlags, src ...ast.Node) error
CallWith always panics on error, while CallWithEx returns err if match function call failed. If an error ocurs, CallWithEx pops all function arguments from the CodeBuilder stack. In most case, you should call CallWith instead of CallWithEx.
func (*CodeBuilder) Case ¶ added in v0.6.3
func (p *CodeBuilder) Case(n int, src ...ast.Node) *CodeBuilder
Case starts case body of a switch..case statement.
func (*CodeBuilder) CommCase ¶ added in v0.9.3
func (p *CodeBuilder) CommCase(n int, src ...ast.Node) *CodeBuilder
CommCase starts case body of a select..case statement.
func (*CodeBuilder) Comments ¶ added in v0.9.6
func (p *CodeBuilder) Comments() *ast.CommentGroup
Comments returns the comments of next statement.
func (*CodeBuilder) CompareNil ¶ added in v0.8.15
func (p *CodeBuilder) CompareNil(op token.Token, src ...ast.Node) *CodeBuilder
CompareNil func
func (*CodeBuilder) Continue ¶ added in v0.8.4
func (p *CodeBuilder) Continue(l *Label) *CodeBuilder
Continue func
func (*CodeBuilder) Debug ¶ added in v0.9.15
func (p *CodeBuilder) Debug(dbg func(cb *CodeBuilder)) *CodeBuilder
Debug func
func (*CodeBuilder) DefineVarStart ¶ added in v0.5.0
func (p *CodeBuilder) DefineVarStart(pos token.Pos, names ...string) *CodeBuilder
DefineVarStart func
func (*CodeBuilder) Elem ¶ added in v0.8.50
func (p *CodeBuilder) Elem(src ...ast.Node) *CodeBuilder
Elem func
func (*CodeBuilder) ElemRef ¶ added in v0.8.50
func (p *CodeBuilder) ElemRef(src ...ast.Node) *CodeBuilder
ElemRef func
func (*CodeBuilder) Else ¶ added in v0.6.3
func (p *CodeBuilder) Else(src ...ast.Node) *CodeBuilder
Else starts else body of a if..else statement.
func (*CodeBuilder) End ¶ added in v0.2.0
func (p *CodeBuilder) End(src ...ast.Node) *CodeBuilder
End func
func (*CodeBuilder) EndConst ¶ added in v0.4.1
func (p *CodeBuilder) EndConst() *Element
func (*CodeBuilder) EndInit ¶ added in v0.5.0
func (p *CodeBuilder) EndInit(n int) *CodeBuilder
EndInit func
func (*CodeBuilder) EndStmt ¶ added in v0.2.0
func (p *CodeBuilder) EndStmt() *CodeBuilder
EndStmt func
func (*CodeBuilder) Fallthrough ¶ added in v0.6.3
func (p *CodeBuilder) Fallthrough() *CodeBuilder
Fallthrough func
func (*CodeBuilder) For ¶ added in v0.6.4
func (p *CodeBuilder) For(src ...ast.Node) *CodeBuilder
For func
func (*CodeBuilder) ForRange ¶ added in v0.6.4
func (p *CodeBuilder) ForRange(names ...string) *CodeBuilder
ForRange func
func (*CodeBuilder) ForRangeEx ¶ added in v1.12.7
func (p *CodeBuilder) ForRangeEx(names []string, src ...ast.Node) *CodeBuilder
ForRangeEx func
func (*CodeBuilder) Func ¶ added in v0.9.9
func (p *CodeBuilder) Func() *Func
Func returns current func (nil means in global scope).
func (*CodeBuilder) Goto ¶ added in v0.8.4
func (p *CodeBuilder) Goto(l *Label) *CodeBuilder
Goto func
func (*CodeBuilder) If ¶ added in v0.6.3
func (p *CodeBuilder) If(src ...ast.Node) *CodeBuilder
Block starts a if statement.
func (*CodeBuilder) InVBlock ¶ added in v1.10.9
func (p *CodeBuilder) InVBlock() bool
InVBlock checks if current statement is in vblock or not.
func (*CodeBuilder) IncDec ¶ added in v0.8.0
func (p *CodeBuilder) IncDec(op token.Token, src ...ast.Node) *CodeBuilder
IncDec func
func (*CodeBuilder) Index ¶ added in v0.8.31
func (p *CodeBuilder) Index(nidx int, twoValue bool, src ...ast.Node) *CodeBuilder
Index func:
- a[i]
- fn[T1, T2, ..., Tn]
- G[T1, T2, ..., Tn]
func (*CodeBuilder) IndexRef ¶ added in v0.7.0
func (p *CodeBuilder) IndexRef(nidx int, src ...ast.Node) *CodeBuilder
IndexRef func
func (*CodeBuilder) InternalStack ¶ added in v1.2.8
func (p *CodeBuilder) InternalStack() *InternalStack
InternalStack: don't call it (only for internal use)
func (*CodeBuilder) Label ¶ added in v0.8.4
func (p *CodeBuilder) Label(l *Label) *CodeBuilder
Label func
func (*CodeBuilder) LookupLabel ¶ added in v1.7.8
func (p *CodeBuilder) LookupLabel(name string) (l *Label, ok bool)
LookupLabel func
func (*CodeBuilder) MapLit ¶ added in v0.6.0
func (p *CodeBuilder) MapLit(typ types.Type, arity int, src ...ast.Node) *CodeBuilder
MapLit func
func (*CodeBuilder) Member ¶ added in v0.9.15
func (p *CodeBuilder) Member(name string, flag MemberFlag, src ...ast.Node) (kind MemberKind, err error)
Member access member by its name. src should point to the full source node `x.sel`
func (*CodeBuilder) MemberRef ¶ added in v0.8.31
func (p *CodeBuilder) MemberRef(name string, src ...ast.Node) *CodeBuilder
MemberRef func
func (*CodeBuilder) MemberVal ¶ added in v0.3.5
func (p *CodeBuilder) MemberVal(name string, src ...ast.Node) *CodeBuilder
MemberVal func
func (*CodeBuilder) NewAutoVar ¶ added in v0.5.0
func (p *CodeBuilder) NewAutoVar(pos token.Pos, name string, pv **types.Var) *CodeBuilder
NewAutoVar func
func (*CodeBuilder) NewClosure ¶ added in v0.2.0
func (p *CodeBuilder) NewClosure(params, results *Tuple, variadic bool) *Func
NewClosure func
func (*CodeBuilder) NewClosureWith ¶ added in v0.2.8
func (p *CodeBuilder) NewClosureWith(sig *types.Signature) *Func
NewClosureWith func
func (*CodeBuilder) NewConstStart ¶ added in v0.6.0
func (p *CodeBuilder) NewConstStart(typ types.Type, names ...string) *CodeBuilder
NewConstStart func
func (*CodeBuilder) NewLabel ¶ added in v1.7.8
func (p *CodeBuilder) NewLabel(pos token.Pos, name string) *Label
func (*CodeBuilder) NewType ¶ added in v0.8.27
func (p *CodeBuilder) NewType(name string, src ...ast.Node) *TypeDecl
NewType func
func (*CodeBuilder) NewTypeDecls ¶ added in v1.13.0
func (p *CodeBuilder) NewTypeDecls() (ret *TypeDefs, defineHere func())
NewTypeDecls starts a type declaration block but delay to define it.
func (*CodeBuilder) NewTypeDefs ¶ added in v1.13.0
func (p *CodeBuilder) NewTypeDefs() *TypeDefs
NewTypeDefs starts a type declaration block.
func (*CodeBuilder) NewVar ¶ added in v0.2.0
func (p *CodeBuilder) NewVar(typ types.Type, names ...string) *CodeBuilder
NewVar func
func (*CodeBuilder) NewVarStart ¶ added in v0.5.0
func (p *CodeBuilder) NewVarStart(typ types.Type, names ...string) *CodeBuilder
NewVarStart func
func (*CodeBuilder) Pkg ¶ added in v0.2.7
func (p *CodeBuilder) Pkg() *Package
Pkg returns the package instance.
func (*CodeBuilder) RangeAssignThen ¶ added in v0.6.4
func (p *CodeBuilder) RangeAssignThen(pos token.Pos) *CodeBuilder
RangeAssignThen func
func (*CodeBuilder) ResetInit ¶ added in v0.9.12
func (p *CodeBuilder) ResetInit()
ResetInit resets the variable init state of CodeBuilder.
func (*CodeBuilder) ResetStmt ¶ added in v0.9.11
func (p *CodeBuilder) ResetStmt()
ResetStmt resets the statement state of CodeBuilder.
func (*CodeBuilder) Return ¶ added in v0.3.7
func (p *CodeBuilder) Return(n int, src ...ast.Node) *CodeBuilder
Return func
func (*CodeBuilder) ReturnErr ¶ added in v0.8.24
func (p *CodeBuilder) ReturnErr(outer bool) *CodeBuilder
ReturnErr func
func (*CodeBuilder) Scope ¶ added in v0.5.3
func (p *CodeBuilder) Scope() *types.Scope
Scope returns current scope.
func (*CodeBuilder) Select ¶ added in v0.9.3
func (p *CodeBuilder) Select(src ...ast.Node) *CodeBuilder
Select starts a select statement.
func (*CodeBuilder) SetBodyHandler ¶ added in v1.7.4
func (p *CodeBuilder) SetBodyHandler(handle func(body *ast.BlockStmt, kind int)) *CodeBuilder
func (*CodeBuilder) SetComments ¶ added in v0.9.5
func (p *CodeBuilder) SetComments(comments *ast.CommentGroup, once bool) *CodeBuilder
SetComments sets comments to next statement.
func (*CodeBuilder) Slice ¶ added in v0.8.31
func (p *CodeBuilder) Slice(slice3 bool, src ...ast.Node) *CodeBuilder
Slice func
func (*CodeBuilder) SliceLit ¶ added in v0.6.0
func (p *CodeBuilder) SliceLit(typ types.Type, arity int, keyVal ...bool) *CodeBuilder
SliceLit func
func (*CodeBuilder) SliceLitEx ¶ added in v1.11.38
func (p *CodeBuilder) SliceLitEx(typ types.Type, arity int, keyVal bool, src ...ast.Node) *CodeBuilder
SliceLitEx func
func (*CodeBuilder) Star ¶ added in v0.8.5
func (p *CodeBuilder) Star(src ...ast.Node) *CodeBuilder
Star func
func (*CodeBuilder) StructLit ¶ added in v0.8.26
func (p *CodeBuilder) StructLit(typ types.Type, arity int, keyVal bool, src ...ast.Node) *CodeBuilder
StructLit func
func (*CodeBuilder) Switch ¶ added in v0.6.3
func (p *CodeBuilder) Switch(src ...ast.Node) *CodeBuilder
Switch starts a switch statement.
func (*CodeBuilder) Then ¶ added in v0.6.3
func (p *CodeBuilder) Then(src ...ast.Node) *CodeBuilder
Then starts body of a if/switch/for statement.
func (*CodeBuilder) Typ ¶ added in v0.7.6
func (p *CodeBuilder) Typ(typ types.Type, src ...ast.Node) *CodeBuilder
Typ func
func (*CodeBuilder) TypeAssert ¶ added in v0.9.2
func (p *CodeBuilder) TypeAssert(typ types.Type, twoValue bool, src ...ast.Node) *CodeBuilder
TypeAssert func
func (*CodeBuilder) TypeAssertThen ¶ added in v0.9.2
func (p *CodeBuilder) TypeAssertThen() *CodeBuilder
TypeAssertThen starts body of a type switch statement.
func (*CodeBuilder) TypeCase ¶ added in v0.9.2
func (p *CodeBuilder) TypeCase(n int, src ...ast.Node) *CodeBuilder
TypeCase starts case body of a type switch statement.
func (*CodeBuilder) TypeSwitch ¶ added in v0.9.2
func (p *CodeBuilder) TypeSwitch(name string, src ...ast.Node) *CodeBuilder
TypeSwitch starts a type switch statement.
<pre> typeSwitch(name) init; expr typeAssertThen type1, type2, ... typeN typeCase(N)
... end
type1, type2, ... typeM typeCase(M)
... end
end </pre>
func (*CodeBuilder) UnaryOp ¶ added in v0.2.0
func (p *CodeBuilder) UnaryOp(op token.Token, params ...interface{}) *CodeBuilder
UnaryOp:
- cb.UnaryOp(op token.Token)
- cb.UnaryOp(op token.Token, twoValue bool)
- cb.UnaryOp(op token.Token, twoValue bool, src ast.Node)
func (*CodeBuilder) UntypedBigInt ¶ added in v1.0.0
func (p *CodeBuilder) UntypedBigInt(v *big.Int, src ...ast.Node) *CodeBuilder
UntypedBigInt func
func (*CodeBuilder) UntypedBigRat ¶ added in v1.0.0
func (p *CodeBuilder) UntypedBigRat(v *big.Rat, src ...ast.Node) *CodeBuilder
UntypedBigRat func
func (*CodeBuilder) VBlock ¶ added in v1.10.9
func (p *CodeBuilder) VBlock() *CodeBuilder
VBlock starts a vblock statement.
func (*CodeBuilder) Val ¶ added in v0.2.0
func (p *CodeBuilder) Val(v interface{}, src ...ast.Node) *CodeBuilder
Val func
func (*CodeBuilder) VarRef ¶ added in v0.2.0
func (p *CodeBuilder) VarRef(ref interface{}, src ...ast.Node) *CodeBuilder
VarRef func: p.VarRef(nil) means underscore (_)
func (*CodeBuilder) VarVal ¶ added in v1.11.39
func (p *CodeBuilder) VarVal(name string, src ...ast.Node) *CodeBuilder
func (*CodeBuilder) ZeroLit ¶ added in v0.7.2
func (p *CodeBuilder) ZeroLit(typ types.Type) *CodeBuilder
ZeroLit func
type Config ¶ added in v0.2.0
type Config struct { // Types provides type information for the package (optional). Types *types.Package // Fset provides source position information for syntax trees and types (optional). // If Fset is nil, Load will use a new fileset, but preserve Fset's value. Fset *token.FileSet // HandleErr is called to handle errors (optional). HandleErr func(err error) // NodeInterpreter is to interpret an ast.Node (optional). NodeInterpreter NodeInterpreter // LoadNamed is called to load a delay-loaded named type (optional). LoadNamed LoadNamedFunc // An Importer resolves import paths to Packages (optional). Importer types.Importer // DefaultGoFile specifies default file name. It can be empty. DefaultGoFile string // PkgPathIox specifies package path of github.com/goplus/gop/builtin/iox PkgPathIox string // NewBuiltin is to create the builin package (optional). NewBuiltin func(pkg *Package, conf *Config) *types.Package // CanImplicitCast checkes can cast V to T implicitly (optional). CanImplicitCast func(pkg *Package, V, T types.Type, pv *Element) bool // untyped bigint, untyped bigrat, untyped bigfloat (optional). UntypedBigInt, UntypedBigRat, UntypedBigFloat *types.Named // A Recorder records selected objects such as methods, etc (optional). Recorder Recorder // (internal) only for testing DbgPositioner dbgPositioner // NoSkipConstant is to disable optimization of skipping constant (optional). NoSkipConstant bool }
Config type
type ConstDefs ¶ added in v1.10.2
type ConstDefs struct { F F // contains filtered or unexported fields }
ConstDefs represents a const declaration block.
func (*ConstDefs) New ¶ added in v1.10.2
New creates constants with specified `typ` (can be nil) and `names`. The values of the constants are given by the callback `fn`.
func (*ConstDefs) NewAt ¶ added in v1.12.2
func (p *ConstDefs) NewAt(at ValueAt, fn F, iotav int, pos token.Pos, typ types.Type, names ...string) *ConstDefs
NewAt creates constants with specified `typ` (can be nil) and `names`. The values of the constants are given by the callback `fn`.
func (*ConstDefs) Next ¶ added in v1.10.2
Next creates constants with specified `names`. The values of the constants are given by the callback `fn` which is specified by the last call to `New`.
func (*ConstDefs) NextAt ¶ added in v1.12.2
NextAt creates constants with specified `names`. The values of the constants are given by the callback `fn`.
func (*ConstDefs) SetComments ¶ added in v1.12.2
func (p *ConstDefs) SetComments(doc *ast.CommentGroup) *ConstDefs
SetComments sets associated documentation.
type Element ¶ added in v0.7.6
func CastFromBool ¶ added in v1.10.1
CastFromBool tries to cast a bool expression into integer. typ must be an integer type.
type F ¶ added in v1.12.2
type F = func(cb *CodeBuilder) int
F represents an initialization callback for constants/variables.
type File ¶ added in v1.11.0
type File struct {
// contains filtered or unexported fields
}
func (*File) CheckGopDeps ¶ added in v1.14.10
CheckGopDeps checks dependencies of Go+ modules. The return flags can be FlagDepModGop and FlagDepModX.
type Func ¶ added in v0.2.0
Func type
func (*Func) Ancestor ¶ added in v1.7.2
Ancestor returns ancestor of a closure function. It returns itself if the specified func is a normal function.
func (*Func) BodyStart ¶ added in v0.2.0
func (p *Func) BodyStart(pkg *Package, src ...ast.Node) *CodeBuilder
BodyStart func
func (*Func) Comments ¶ added in v1.11.39
func (p *Func) Comments() *ast.CommentGroup
Comments returns associated documentation.
func (*Func) End ¶ added in v0.2.0
func (p *Func) End(cb *CodeBuilder, src ast.Node)
End is for internal use.
func (*Func) SetComments ¶ added in v1.7.14
func (p *Func) SetComments(pkg *Package, doc *ast.CommentGroup) *Func
SetComments sets associated documentation.
type ImportError ¶ added in v1.11.10
func (*ImportError) Error ¶ added in v1.11.10
func (p *ImportError) Error() string
func (*ImportError) Unwrap ¶ added in v1.11.10
func (p *ImportError) Unwrap() error
type InstrFlags ¶ added in v0.8.9
const ( InstrFlagEllipsis InstrFlags = 1 << iota InstrFlagTwoValue )
type Instruction ¶ added in v0.7.6
type InternalStack ¶ added in v1.2.8
type LoadNamedFunc ¶ added in v1.0.10
type MatchError ¶ added in v0.9.20
type MatchError struct { Fset dbgPositioner Src ast.Node Arg types.Type Param types.Type At interface{} // contains filtered or unexported fields }
func (*MatchError) Error ¶ added in v0.9.20
func (p *MatchError) Error() string
func (*MatchError) Message ¶ added in v1.13.0
func (p *MatchError) Message(fileLine string) string
func (*MatchError) Pos ¶ added in v1.13.0
func (p *MatchError) Pos() token.Pos
type MemberFlag ¶ added in v1.8.2
type MemberFlag int
const ( MemberFlagVal MemberFlag = iota MemberFlagMethodAlias MemberFlagAutoProperty MemberFlagRef MemberFlag = -1 )
type MemberKind ¶ added in v0.9.15
type MemberKind int
const ( MemberInvalid MemberKind = iota MemberMethod MemberAutoProperty MemberField )
type NodeInterpreter ¶ added in v0.9.16
type ObjectDocs ¶ added in v1.12.7
type ObjectDocs = map[types.Object]*ast.CommentGroup
ObjectDocs maps an object to its document.
type OverloadType ¶ added in v1.14.2
Go+ overload extended types
type Package ¶
type Package struct { PkgRef Docs ObjectDocs Fset *token.FileSet // contains filtered or unexported fields }
Package type
func NewPackage ¶ added in v0.2.0
NewPackage creates a new package.
func (*Package) ASTFile ¶ added in v1.11.2
ASTFile returns AST of a file by its fname. If fname is not provided, it returns AST of the default (NOT current) file.
func (*Package) CB ¶ added in v0.5.2
func (p *Package) CB() *CodeBuilder
CB returns the code builder.
func (*Package) CommentedASTFile ¶ added in v1.11.2
func (p *Package) CommentedASTFile(fname ...string) *printer.CommentedNodes
CommentedASTFile returns commented AST of a file by its fname. If fname is not provided, it returns AST of the default (NOT current) file.
func (*Package) ConstStart ¶ added in v0.4.1
func (p *Package) ConstStart() *CodeBuilder
ConstStart starts a constant expression.
func (*Package) ExportFields ¶ added in v1.11.20
func (*Package) File ¶ added in v1.11.0
File returns a file by its name. If `fname` is not provided, it returns the default (NOT current) file.
func (*Package) ForEachFile ¶ added in v1.11.0
ForEachFile walks all files to `doSth`.
func (*Package) ForceImport ¶ added in v1.14.0
ForceImport always imports a package (i.e. `import _ pkgPath`).
func (*Package) Import ¶ added in v0.2.0
Import imports a package by pkgPath. It will panic if pkgPath not found.
func (*Package) Instantiate ¶ added in v1.14.0
func (*Package) MethodToFunc ¶ added in v1.14.1
func (pkg *Package) MethodToFunc(typ types.Type, name string, src ...ast.Node) (ret *Element, err error)
MethodToFunc:
(T).method (*T).method
func (*Package) NewAutoParam ¶ added in v0.6.5
NewAutoParam returns a new variable representing a function result parameter with auto type.
func (*Package) NewAutoParamEx ¶ added in v1.11.7
NewAutoParamEx returns a new variable representing a function result parameter with auto type.
func (*Package) NewConstDefs ¶ added in v1.10.2
NewConstDefs starts a constant declaration block.
func (*Package) NewConstStart
deprecated
added in
v0.6.0
func (*Package) NewFuncDecl ¶ added in v1.9.9
func (*Package) NewFuncWith ¶ added in v0.2.1
func (p *Package) NewFuncWith( pos token.Pos, name string, sig *types.Signature, recvTypePos func() token.Pos) (*Func, error)
NewFuncWith func
func (*Package) NewParam ¶ added in v0.2.0
NewParam returns a new variable representing a function parameter.
func (*Package) NewTypeDefs ¶ added in v1.12.2
NewTypeDefs starts a type declaration block.
func (*Package) NewVar
deprecated
added in
v0.2.0
NewVar starts a var declaration block and creates uninitialized variables with specified `typ` (can be nil) and `names`.
Deprecated: This is a shortcut for creating variables. `NewVarDefs` is more powerful and more recommended.
func (*Package) NewVarDefs ¶ added in v1.10.2
NewVarDefs starts a var declaration block.
func (*Package) NewVarEx
deprecated
added in
v1.4.0
func (p *Package) NewVarEx(scope *types.Scope, pos token.Pos, typ types.Type, names ...string) *VarDecl
NewVarEx starts a var declaration block and creates uninitialized variables with specified `typ` (can be nil) and `names`.
Deprecated: This is a shortcut for creating variables. `NewVarDefs` is more powerful and more recommended.
func (*Package) NewVarStart
deprecated
added in
v0.6.0
NewVarStart creates variables with specified `typ` (can be nil) and `names` and starts to initialize them. You should call `CodeBuilder.EndInit` to end initialization.
Deprecated: This is a shortcut for creating variables. `NewVarDefs` is more powerful and more recommended.
func (*Package) RestoreCurFile ¶ added in v1.11.0
RestoreCurFile sets current file to an `old` file that was returned by `SetCurFile`.
func (*Package) SetCurFile ¶ added in v1.11.0
SetCurFile sets new current file to write. If createIfNotExists is true, then create a new file named `fname` if it not exists. It returns an `old` file to restore in the future (by calling `RestoreCurFile`).
func (*Package) SetRedeclarable ¶ added in v1.12.0
SetRedeclarable sets to allow redeclaration of variables/functions or not.
func (*Package) SetVFields ¶ added in v1.9.10
func (*Package) TryImport ¶ added in v1.12.7
TryImport imports a package by pkgPath. It returns nil if pkgPath not found.
type PkgRef ¶ added in v0.2.0
type PkgRef struct { // Types provides type information for the package. // The NeedTypes LoadMode bit sets this field for packages matching the // patterns; type information for dependencies may be missing or incomplete, // unless NeedDeps and NeedImports are also set. Types *types.Package }
A PkgRef describes a Go package imported by others.
func (PkgRef) EnsureImported
deprecated
added in
v0.8.71
func (p PkgRef) EnsureImported()
Deprecated: EnsureImported is nothing to do now.
func (PkgRef) MarkForceUsed ¶ added in v1.1.1
MarkForceUsed marks to import a package always (i.e. `import _ pkgPath`).
type Recorder ¶ added in v1.12.7
type Recorder interface { // Member maps identifiers to the objects they denote. Member(id ast.Node, obj types.Object) // Call maps func to the the objects they denote. Call(fn ast.Node, obj types.Object) }
Recorder represents a gox event recorder.
type TemplateFunc ¶ added in v0.3.0
TemplateFunc: template function
func NewTemplateFunc ¶ added in v0.3.0
func NewTemplateFunc(pos token.Pos, pkg *types.Package, name string, tsig *TemplateSignature) *TemplateFunc
NewTemplateFunc creates a template function.
func (*TemplateFunc) Type ¶ added in v0.3.0
func (p *TemplateFunc) Type() types.Type
NewTemplateFunc return the type of specified template function.
type TemplateParamType ¶ added in v0.3.0
type TemplateParamType struct {
// contains filtered or unexported fields
}
func NewTemplateParamType ¶ added in v0.3.0
func NewTemplateParamType(idx int, name string, contract Contract) *TemplateParamType
func (*TemplateParamType) String ¶ added in v0.3.0
func (p *TemplateParamType) String() string
func (*TemplateParamType) Underlying ¶ added in v0.3.0
func (p *TemplateParamType) Underlying() types.Type
type TemplateSignature ¶ added in v0.3.0
type TemplateSignature struct {
// contains filtered or unexported fields
}
TemplateSignature: type of template function
func NewTemplateSignature ¶ added in v0.3.0
func NewTemplateSignature( templateParams []*TemplateParamType, recv *types.Var, params, results *types.Tuple, variadic bool, tok ...token.Token) *TemplateSignature
NewTemplateSignature creates type of a template function.
func (*TemplateSignature) String ¶ added in v0.3.0
func (p *TemplateSignature) String() string
func (*TemplateSignature) Underlying ¶ added in v0.3.0
func (p *TemplateSignature) Underlying() types.Type
type Tuple ¶ added in v0.2.0
A Tuple represents an ordered list of variables; a nil *Tuple is a valid (empty) tuple. Tuples are used as components of signatures and to represent the type of multiple assignments; they are not first class types of Go.
type TyInstruction ¶ added in v1.14.0
type TyInstruction struct {
// contains filtered or unexported fields
}
func (*TyInstruction) String ¶ added in v1.14.0
func (p *TyInstruction) String() string
func (*TyInstruction) Underlying ¶ added in v1.14.0
func (p *TyInstruction) Underlying() types.Type
type TyOverloadFunc ¶ added in v1.11.39
TyOverloadFunc: overload function type
func (*TyOverloadFunc) Len ¶ added in v1.14.0
func (p *TyOverloadFunc) Len() int
func (*TyOverloadFunc) String ¶ added in v1.11.39
func (p *TyOverloadFunc) String() string
func (*TyOverloadFunc) Underlying ¶ added in v1.11.39
func (p *TyOverloadFunc) Underlying() types.Type
type TyOverloadMethod ¶ added in v1.11.39
TyOverloadMethod: overload function type
func (*TyOverloadMethod) Len ¶ added in v1.14.0
func (p *TyOverloadMethod) Len() int
func (*TyOverloadMethod) String ¶ added in v1.11.39
func (p *TyOverloadMethod) String() string
func (*TyOverloadMethod) Underlying ¶ added in v1.11.39
func (p *TyOverloadMethod) Underlying() types.Type
type TyOverloadNamed ¶ added in v1.14.0
func CheckOverloadNamed ¶ added in v1.14.0
func CheckOverloadNamed(typ types.Type) (on *TyOverloadNamed, ok bool)
CheckOverloadNamed returns if specified type is a TyOverloadNamed or not.
func (*TyOverloadNamed) Len ¶ added in v1.14.0
func (p *TyOverloadNamed) Len() int
func (*TyOverloadNamed) String ¶ added in v1.14.0
func (p *TyOverloadNamed) String() string
func (*TyOverloadNamed) Underlying ¶ added in v1.14.0
func (p *TyOverloadNamed) Underlying() types.Type
type TySubst ¶ added in v1.14.0
func (*TySubst) Underlying ¶ added in v1.14.0
type TyTemplateRecvMethod ¶ added in v1.11.39
func (*TyTemplateRecvMethod) Obj ¶ added in v1.14.0
func (p *TyTemplateRecvMethod) Obj() types.Object
func (*TyTemplateRecvMethod) String ¶ added in v1.11.39
func (p *TyTemplateRecvMethod) String() string
func (*TyTemplateRecvMethod) Underlying ¶ added in v1.11.39
func (p *TyTemplateRecvMethod) Underlying() types.Type
type TypeDecl ¶ added in v0.8.27
type TypeDecl struct {
// contains filtered or unexported fields
}
TypeDecl type
func (*TypeDecl) Delete ¶ added in v1.11.1
func (p *TypeDecl) Delete()
Delete deletes this type. NOTE: It panics if you call InitType after Delete.
func (*TypeDecl) Inited ¶ added in v1.10.0
Inited checkes if InitType is called or not. Will panic if this type is deleted (please use State to check).
func (*TypeDecl) SetComments ¶ added in v1.7.15
func (p *TypeDecl) SetComments(pkg *Package, doc *ast.CommentGroup) *TypeDecl
SetComments sets associated documentation.
type TypeDefs ¶ added in v1.12.2
type TypeDefs struct {
// contains filtered or unexported fields
}
TypeDefs represents a type declaration block.
func (*TypeDefs) Complete ¶ added in v1.12.2
func (p *TypeDefs) Complete()
Complete checks type declarations & marks completed.
func (*TypeDefs) NewType ¶ added in v1.12.2
NewType creates a new type (which need to call InitType later).
func (*TypeDefs) SetComments ¶ added in v1.12.2
func (p *TypeDefs) SetComments(doc *ast.CommentGroup) *TypeDefs
SetComments sets associated documentation.
type TypeParamList ¶ added in v1.11.32
type TypeParamList = types.TypeParamList
type TypeType ¶ added in v0.7.6
type TypeType struct {
// contains filtered or unexported fields
}
func NewTypeType ¶ added in v0.7.6
func (*TypeType) Underlying ¶ added in v0.7.6
type UnionField ¶ added in v1.9.10
type UnionFields ¶ added in v1.9.10
type UnionFields struct {
// contains filtered or unexported fields
}
func NewUnionFields ¶ added in v1.9.10
func NewUnionFields(flds []*UnionField) *UnionFields
func (*UnionFields) At ¶ added in v1.9.13
func (p *UnionFields) At(i int) *UnionField
func (*UnionFields) FieldRef ¶ added in v1.9.10
func (p *UnionFields) FieldRef(cb *CodeBuilder, tfld *types.Named, name string, src ast.Node) MemberKind
func (*UnionFields) FindField ¶ added in v1.9.10
func (p *UnionFields) FindField( cb *CodeBuilder, tfld *types.Named, name string, arg *Element, src ast.Node) MemberKind
func (*UnionFields) Len ¶ added in v1.9.13
func (p *UnionFields) Len() int
type VFields ¶ added in v1.9.10
type VFields interface { FindField(cb *CodeBuilder, t *types.Named, name string, arg *Element, src ast.Node) MemberKind FieldRef(cb *CodeBuilder, t *types.Named, name string, src ast.Node) MemberKind }
type ValueDecl ¶ added in v0.5.0
type ValueDecl struct {
// contains filtered or unexported fields
}
ValueDecl type
func (*ValueDecl) End ¶ added in v0.5.0
func (p *ValueDecl) End(cb *CodeBuilder, src ast.Node)
End is provided for internal usage. Don't call it at any time. Please use (*CodeBuilder).EndInit instead.
func (*ValueDecl) InitStart ¶ added in v0.5.0
func (p *ValueDecl) InitStart(pkg *Package) *CodeBuilder
InitStart initializes a uninitialized variable or constant.
type VarDefs ¶ added in v1.10.2
type VarDefs struct {
// contains filtered or unexported fields
}
VarDefs represents a var declaration block.
func (*VarDefs) Delete ¶ added in v1.10.11
Delete deletes an uninitialized variable who was created by `New`. If the variable is initialized, it fails to delete and returns `syscall.EACCES`. If the variable is not found, it returns `syscall.ENOENT`.
func (*VarDefs) New ¶ added in v1.10.2
New creates uninitialized variables with specified `typ` (can be nil) and `names`.
func (*VarDefs) NewAndInit ¶ added in v1.10.2
NewAndInit creates variables with specified `typ` (can be nil) and `names`, and initializes them by `fn`.
func (*VarDefs) NewAt ¶ added in v1.12.2
NewAt creates uninitialized variables with specified `typ` (can be nil) and `names`.
func (*VarDefs) SetComments ¶ added in v1.12.2
func (p *VarDefs) SetComments(doc *ast.CommentGroup) *VarDefs
SetComments sets associated documentation.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
cmd
|
|
go/format
Package format implements standard formatting of Go source.
|
Package format implements standard formatting of Go source. |
go/printer
Package printer implements printing of AST nodes.
|
Package printer implements printing of AST nodes. |
tutorial
|
|