generation of custom error unpacking builds (not tested yet)
This commit is contained in:
parent
e7e1426d89
commit
9a59bdb239
|
@ -70,6 +70,10 @@ func isKeyWord(arg string) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func add(val1, val2 int) int {
|
||||||
|
return val1 + val1
|
||||||
|
}
|
||||||
|
|
||||||
// Bind generates a Go wrapper around a contract ABI. This wrapper isn't meant
|
// Bind generates a Go wrapper around a contract ABI. This wrapper isn't meant
|
||||||
// to be used as is in client code, but rather as an intermediate struct which
|
// to be used as is in client code, but rather as an intermediate struct which
|
||||||
// enforces compile time type safety and naming convention as opposed to having to
|
// enforces compile time type safety and naming convention as opposed to having to
|
||||||
|
@ -146,6 +150,7 @@ func BindV2(types []string, abis []string, bytecodes []string, fsigs []map[strin
|
||||||
"bindtopictype": bindTopicType,
|
"bindtopictype": bindTopicType,
|
||||||
"capitalise": capitalise,
|
"capitalise": capitalise,
|
||||||
"decapitalise": decapitalise,
|
"decapitalise": decapitalise,
|
||||||
|
"add": add,
|
||||||
}
|
}
|
||||||
tmpl := template.Must(template.New("").Funcs(funcs).Parse(tmplSourceV2))
|
tmpl := template.Must(template.New("").Funcs(funcs).Parse(tmplSourceV2))
|
||||||
if err := tmpl.Execute(buffer, data); err != nil {
|
if err := tmpl.Execute(buffer, data); err != nil {
|
||||||
|
|
|
@ -151,6 +151,24 @@ var (
|
||||||
}
|
}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
|
{{ if .Errors }}
|
||||||
|
func (_{{$contract.Type}} *{{$contract.Type}}) UnpackError(raw []byte) any {
|
||||||
|
{{$i := 0}}
|
||||||
|
{{range $k, $v := .Errors}}
|
||||||
|
{{ if eq $i 0 }}
|
||||||
|
if val, err := _{{$contract.Type}}.Unpack{{.Normalized.Name}}Error(raw); err != nil {
|
||||||
|
return val
|
||||||
|
{{ else }}
|
||||||
|
} else if val, err := _{{$contract.Type}}.Unpack{{.Normalized.Name}}Error(raw); err != nil {
|
||||||
|
return val
|
||||||
|
{{ end -}}
|
||||||
|
{{$i = add $i 1}}
|
||||||
|
{{end -}}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
{{ end -}}
|
||||||
|
|
||||||
{{range .Errors}}
|
{{range .Errors}}
|
||||||
// {{$contract.Type}}{{.Normalized.Name}} represents a {{.Normalized.Name}} error raised by the {{$contract.Type}} contract.
|
// {{$contract.Type}}{{.Normalized.Name}} represents a {{.Normalized.Name}} error raised by the {{$contract.Type}} contract.
|
||||||
type {{$contract.Type}}{{.Normalized.Name}} struct { {{range .Normalized.Inputs}}
|
type {{$contract.Type}}{{.Normalized.Name}} struct { {{range .Normalized.Inputs}}
|
||||||
|
|
|
@ -58,6 +58,15 @@ func (_C *C) PackFoo() ([]byte, error) {
|
||||||
return _C.abi.Pack("Foo")
|
return _C.abi.Pack("Foo")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (_C *C) UnpackError(raw []byte) any {
|
||||||
|
|
||||||
|
if val, err := _C.UnpackBadThingError(raw); err != nil {
|
||||||
|
return val
|
||||||
|
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// CBadThing represents a BadThing error raised by the C contract.
|
// CBadThing represents a BadThing error raised by the C contract.
|
||||||
type CBadThing struct {
|
type CBadThing struct {
|
||||||
Arg1 *big.Int
|
Arg1 *big.Int
|
||||||
|
|
Loading…
Reference in New Issue