| Index: third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/struct.tmpl
|
| diff --git a/third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/struct.tmpl b/third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/struct.tmpl
|
| index 7f687d211256d064961e6a3151a1f57b74ce2cce..5e10011c33a25abb5c2c30d18b0d255ce901aea2 100644
|
| --- a/third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/struct.tmpl
|
| +++ b/third_party/mojo/src/mojo/public/tools/bindings/generators/go_templates/struct.tmpl
|
| @@ -43,7 +43,9 @@ func (s *{{struct|name(exported)}}) Decode(decoder *bindings.Decoder) error {
|
| }
|
| expectedSize := {{struct|name(False)}}_Versions[index].Size
|
| if expectedSize != header.Size {
|
| - return fmt.Errorf("invalid struct header size: should be %d, but was %d", expectedSize, header.Size)
|
| + return &bindings.ValidationError{bindings.UnexpectedStructHeader,
|
| + fmt.Sprintf("invalid struct header size: should be %d, but was %d", expectedSize, header.Size),
|
| + }
|
| }
|
| }
|
| {% for byte in struct.bytes %}
|
| @@ -151,7 +153,7 @@ if pointer{{level}} == 0 {
|
| {{decodePointerValue('(*'~value~')', kind, level)|tab_indent()}}
|
| }
|
| {% else %}
|
| - return fmt.Errorf("unexpected null pointer")
|
| + return &bindings.ValidationError{bindings.UnexpectedNullPointer, "unexpected null pointer"}
|
| } else {
|
| {{decodePointerValue(value, kind, level)|tab_indent()}}
|
| }
|
| @@ -172,7 +174,7 @@ if handle{{level}}.IsValid() {
|
| {% if kind|is_nullable %}
|
| {{value}} = nil
|
| {% else %}
|
| - return fmt.Errorf("unexpected invalid handle")
|
| + return &bindings.ValidationError{bindings.UnexpectedInvalidHandle, "unexpected invalid handle"}
|
| {% endif %}
|
| }
|
| {% elif kind|is_enum %}
|
| @@ -204,7 +206,9 @@ if err != nil {
|
| }
|
| {% if kind.length %}
|
| if len{{level}} != {{kind.length}} {
|
| - return fmt.Errorf("invalid array length: expected %d, got %d", {{kind.length}}, len{{level}})
|
| + return &bindings.ValidationError{bindings.UnexpectedArrayHeader,
|
| + fmt.Sprintf("invalid array length: expected %d, got %d", {{kind.length}}, len{{level}}),
|
| + }
|
| }
|
| {% else %}
|
| {{value}} = make({{kind|go_type(False)}}, len{{level}})
|
| @@ -228,7 +232,9 @@ var values{{level}} {{kind.value_kind|array|go_type}}
|
| {{decode('values'~level, kind.value_kind|array, level+1)|tab_indent()}}
|
| }
|
| if len(keys{{level}}) != len(values{{level}}) {
|
| - return fmt.Errorf("Number of keys %d is different from number of values %d", len(keys{{level}}), len(values{{level}}))
|
| + return &bindings.ValidationError{bindings.DifferentSizedArraysInMap,
|
| + fmt.Sprintf("Number of keys %d is different from number of values %d", len(keys{{level}}), len(values{{level}})),
|
| + }
|
| }
|
| if err := decoder.Finish(); err != nil {
|
| return err
|
|
|