mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-18 10:50:44 +00:00
Merge feac4226b1 into dddbaa4bf3
This commit is contained in:
commit
7126dbd21f
2 changed files with 24 additions and 2 deletions
|
|
@ -297,6 +297,28 @@ func TestBindingV2ConvertedV1Tests(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestBindingV2ErrorUsesOriginalName(t *testing.T) {
|
||||
const errorABI = `[{
|
||||
"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],
|
||||
"name":"bad_thing",
|
||||
"type":"error"
|
||||
}]`
|
||||
|
||||
code, err := BindV2([]string{"C"}, []string{errorABI}, []string{""}, "bindings", nil, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("failed to generate binding: %v", err)
|
||||
}
|
||||
for _, want := range []string{
|
||||
`abi.Errors["bad_thing"]`,
|
||||
`UnpackIntoInterface(out, "bad_thing", raw)`,
|
||||
`UnpackBadThingError(raw[4:])`,
|
||||
} {
|
||||
if !strings.Contains(code, want) {
|
||||
t.Fatalf("generated binding does not contain %q:\n%s", want, code)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestNormalizeArgs(t *testing.T) {
|
||||
type normalizeArgsTc struct {
|
||||
inp []string
|
||||
|
|
|
|||
|
|
@ -219,7 +219,7 @@ var (
|
|||
// error definitions.
|
||||
func ({{ decapitalise $contract.Type}} *{{$contract.Type}}) UnpackError(raw []byte) (any, error) {
|
||||
{{- range $k, $v := .Errors}}
|
||||
if bytes.Equal(raw[:4], {{ decapitalise $contract.Type}}.abi.Errors["{{.Normalized.Name}}"].ID.Bytes()[:4]) {
|
||||
if bytes.Equal(raw[:4], {{ decapitalise $contract.Type}}.abi.Errors["{{.Original.Name}}"].ID.Bytes()[:4]) {
|
||||
return {{ decapitalise $contract.Type}}.Unpack{{.Normalized.Name}}Error(raw[4:])
|
||||
}
|
||||
{{- end }}
|
||||
|
|
@ -246,7 +246,7 @@ var (
|
|||
// Solidity: {{.Original.String}}
|
||||
func ({{ decapitalise $contract.Type}} *{{$contract.Type}}) Unpack{{.Normalized.Name}}Error(raw []byte) (*{{$contract.Type}}{{.Normalized.Name}}, error) {
|
||||
out := new({{$contract.Type}}{{.Normalized.Name}})
|
||||
if err := {{ decapitalise $contract.Type}}.abi.UnpackIntoInterface(out, "{{.Normalized.Name}}", raw); err != nil {
|
||||
if err := {{ decapitalise $contract.Type}}.abi.UnpackIntoInterface(out, "{{.Original.Name}}", raw); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
|
|
|
|||
Loading…
Reference in a new issue