ssa: chan send/recv
This commit is contained in:
@@ -68,6 +68,8 @@ func (b Builder) abiTypeOf(t types.Type) func() Expr {
|
||||
return b.abiSliceOf(t)
|
||||
case *types.Array:
|
||||
return b.abiArrayOf(t)
|
||||
case *types.Chan:
|
||||
return b.abiChanOf(t)
|
||||
}
|
||||
panic("todo")
|
||||
}
|
||||
@@ -274,6 +276,14 @@ func (b Builder) abiArrayOf(t *types.Array) func() Expr {
|
||||
}
|
||||
}
|
||||
|
||||
func (b Builder) abiChanOf(t *types.Chan) func() Expr {
|
||||
elem := b.abiTypeOf(t.Elem())
|
||||
return func() Expr {
|
||||
dir, s := abi.ChanDir(t.Dir())
|
||||
return b.Call(b.Pkg.rtFunc("ChanOf"), b.Prog.IntVal(uint64(dir), b.Prog.Int()), b.Str(s), elem())
|
||||
}
|
||||
}
|
||||
|
||||
// func StructField(name string, typ *abi.Type, off uintptr, tag string, embedded bool)
|
||||
// func Struct(pkgPath string, size uintptr, fields []abi.StructField)
|
||||
func (b Builder) abiStructOf(t *types.Struct) func() Expr {
|
||||
|
||||
Reference in New Issue
Block a user