ssa: sliceOf arrayOf
This commit is contained in:
@@ -59,6 +59,10 @@ func (b Builder) abiTypeOf(t types.Type) Expr {
|
||||
return b.abiInterfaceOf(t)
|
||||
case *types.Signature:
|
||||
return b.abiFuncOf(t)
|
||||
case *types.Slice:
|
||||
return b.abiSliceOf(t)
|
||||
case *types.Array:
|
||||
return b.abiArrayOf(t)
|
||||
}
|
||||
panic("todo")
|
||||
}
|
||||
@@ -156,6 +160,16 @@ func (b Builder) abiPointerOf(t *types.Pointer) Expr {
|
||||
return b.Call(b.Pkg.rtFunc("PointerTo"), elem)
|
||||
}
|
||||
|
||||
func (b Builder) abiSliceOf(t *types.Slice) Expr {
|
||||
elem := b.abiTypeOf(t.Elem())
|
||||
return b.Call(b.Pkg.rtFunc("SliceOf"), elem)
|
||||
}
|
||||
|
||||
func (b Builder) abiArrayOf(t *types.Array) Expr {
|
||||
elem := b.abiTypeOf(t.Elem())
|
||||
return b.Call(b.Pkg.rtFunc("ArrayOf"), b.Prog.IntVal(uint64(t.Len()), b.Prog.Uintptr()), elem)
|
||||
}
|
||||
|
||||
// func Struct(pkgPath string, size uintptr, fields []abi.StructField)
|
||||
func (b Builder) abiStructOf(t *types.Struct) Expr {
|
||||
pkg := b.Pkg
|
||||
|
||||
Reference in New Issue
Block a user