From e8c96130456d3153735e55d71a6e85a90747e3fc Mon Sep 17 00:00:00 2001 From: Prajjwal Date: Fri, 5 Sep 2025 23:47:01 +0530 Subject: [PATCH] fix: improve allow failure functionality --- call.go | 15 ++++++++------- caller.go | 4 ++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/call.go b/call.go index b89a9e4..3e1e185 100644 --- a/call.go +++ b/call.go @@ -39,13 +39,14 @@ func ParseABI(rawJson string) (*abi.ABI, error) { // Call wraps a multicall call. type Call struct { - CallName string - Contract *Contract - Method string - Inputs []any - Outputs any - CanFail bool - Failed bool + CallName string + Contract *Contract + Method string + Inputs []any + Outputs any + CanFail bool + Failed bool + UnpackError error } // NewCall creates a new call using given inputs. diff --git a/caller.go b/caller.go index eb2e10d..d614a7f 100644 --- a/caller.go +++ b/caller.go @@ -68,10 +68,10 @@ func (caller *Caller) Call(opts *bind.CallOpts, calls ...*Call) ([]*Call, error) for i, result := range results { call := calls[i] // index always matches - call.Failed = !result.Success if err := call.Unpack(result.ReturnData); err != nil { - return calls, fmt.Errorf("failed to unpack call outputs at index [%d]: %v", i, err) + call.UnpackError = fmt.Errorf("failed to unpack call outputs at index [%d]: %v", i, err) } + call.Failed = !result.Success || err != nil } return calls, nil