mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-18 19:00:46 +00:00
abigen: use original names for custom errors
This commit is contained in:
parent
111e7b8b48
commit
feac4226b1
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) {
|
func TestNormalizeArgs(t *testing.T) {
|
||||||
type normalizeArgsTc struct {
|
type normalizeArgsTc struct {
|
||||||
inp []string
|
inp []string
|
||||||
|
|
|
||||||
|
|
@ -219,7 +219,7 @@ var (
|
||||||
// error definitions.
|
// error definitions.
|
||||||
func ({{ decapitalise $contract.Type}} *{{$contract.Type}}) UnpackError(raw []byte) (any, error) {
|
func ({{ decapitalise $contract.Type}} *{{$contract.Type}}) UnpackError(raw []byte) (any, error) {
|
||||||
{{- range $k, $v := .Errors}}
|
{{- 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:])
|
return {{ decapitalise $contract.Type}}.Unpack{{.Normalized.Name}}Error(raw[4:])
|
||||||
}
|
}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
@ -246,7 +246,7 @@ var (
|
||||||
// Solidity: {{.Original.String}}
|
// Solidity: {{.Original.String}}
|
||||||
func ({{ decapitalise $contract.Type}} *{{$contract.Type}}) Unpack{{.Normalized.Name}}Error(raw []byte) (*{{$contract.Type}}{{.Normalized.Name}}, error) {
|
func ({{ decapitalise $contract.Type}} *{{$contract.Type}}) Unpack{{.Normalized.Name}}Error(raw []byte) (*{{$contract.Type}}{{.Normalized.Name}}, error) {
|
||||||
out := new({{$contract.Type}}{{.Normalized.Name}})
|
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 nil, err
|
||||||
}
|
}
|
||||||
return out, nil
|
return out, nil
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue