forked from cerc-io/plugeth
accounts/abi: allow interface as the destination (#18490)
This commit is contained in:
parent
ad849c01d3
commit
a50b471b6b
@ -74,7 +74,7 @@ func mustArrayToByteSlice(value reflect.Value) reflect.Value {
|
||||
func set(dst, src reflect.Value) error {
|
||||
dstType, srcType := dst.Type(), src.Type()
|
||||
switch {
|
||||
case dstType.Kind() == reflect.Interface:
|
||||
case dstType.Kind() == reflect.Interface && dst.Elem().IsValid():
|
||||
return set(dst.Elem(), src)
|
||||
case dstType.Kind() == reflect.Ptr && dstType.Elem() != derefbigT:
|
||||
return set(dst.Elem(), src)
|
||||
|
@ -512,6 +512,11 @@ func TestMethodMultiReturn(t *testing.T) {
|
||||
Int *big.Int
|
||||
}
|
||||
|
||||
newInterfaceSlice := func(len int) interface{} {
|
||||
slice := make([]interface{}, len)
|
||||
return &slice
|
||||
}
|
||||
|
||||
abi, data, expected := methodMultiReturn(require.New(t))
|
||||
bigint := new(big.Int)
|
||||
var testCases = []struct {
|
||||
@ -539,6 +544,16 @@ func TestMethodMultiReturn(t *testing.T) {
|
||||
&[2]interface{}{&expected.Int, &expected.String},
|
||||
"",
|
||||
"Can unpack into an array",
|
||||
}, {
|
||||
&[2]interface{}{},
|
||||
&[2]interface{}{expected.Int, expected.String},
|
||||
"",
|
||||
"Can unpack into interface array",
|
||||
}, {
|
||||
newInterfaceSlice(2),
|
||||
&[]interface{}{expected.Int, expected.String},
|
||||
"",
|
||||
"Can unpack into interface slice",
|
||||
}, {
|
||||
&[]interface{}{new(int), new(int)},
|
||||
&[]interface{}{&expected.Int, &expected.String},
|
||||
|
Loading…
Reference in New Issue
Block a user