This commit is contained in:
Minh Vu 2026-07-17 21:52:58 -07:00 committed by GitHub
commit 7126dbd21f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 2 deletions

View file

@ -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

View file

@ -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