THRIFT-2419 golang - Fix fmt.Errorf in generated code
Patch: Chris Bannister
diff --git a/compiler/cpp/src/generate/t_go_generator.cc b/compiler/cpp/src/generate/t_go_generator.cc
index 168ca88..a216c2b 100644
--- a/compiler/cpp/src/generate/t_go_generator.cc
+++ b/compiler/cpp/src/generate/t_go_generator.cc
@@ -2615,7 +2615,7 @@
out <<
indent() << "_, _, size, err := iprot.ReadMapBegin()" << endl <<
indent() << "if err != nil {" << endl <<
- indent() << " return fmt.Errorf(\"error reading map begin: %s\")" << endl <<
+ indent() << " return fmt.Errorf(\"error reading map begin: %s\", err)" << endl <<
indent() << "}" << endl <<
indent() << "tMap := make(" << type_to_go_type(orig_type) << ", size)" << endl <<
indent() << prefix << eq << " " << (optional_field ? "&" : "") << "tMap" << endl;
@@ -2624,7 +2624,7 @@
out <<
indent() << "_, size, err := iprot.ReadSetBegin()" << endl <<
indent() << "if err != nil {" << endl <<
- indent() << " return fmt.Errorf(\"error reading set begin: %s\")" << endl <<
+ indent() << " return fmt.Errorf(\"error reading set begin: %s\", err)" << endl <<
indent() << "}" << endl <<
indent() << "tSet := make(map[" << type_to_go_key_type(t->get_elem_type()) << "]bool, size)" << endl <<
indent() << prefix << eq << " " << (optional_field ? "&" : "") << "tSet" << endl;
@@ -2632,7 +2632,7 @@
out <<
indent() << "_, size, err := iprot.ReadListBegin()" << endl <<
indent() << "if err != nil {" << endl <<
- indent() << " return fmt.Errorf(\"error reading list begin: %s\")" << endl <<
+ indent() << " return fmt.Errorf(\"error reading list begin: %s\", err)" << endl <<
indent() << "}" << endl <<
indent() << "tSlice := make(" << type_to_go_type(orig_type) << ", 0, size)" << endl <<
indent() << prefix << eq << " " << (optional_field ? "&" : "") << "tSlice" << endl;
@@ -2664,17 +2664,17 @@
if (ttype->is_map()) {
out <<
indent() << "if err := iprot.ReadMapEnd(); err != nil {" << endl <<
- indent() << " return fmt.Errorf(\"error reading map end: %s\")" << endl <<
+ indent() << " return fmt.Errorf(\"error reading map end: %s\", err)" << endl <<
indent() << "}" << endl;
} else if (ttype->is_set()) {
out <<
indent() << "if err := iprot.ReadSetEnd(); err != nil {" << endl <<
- indent() << " return fmt.Errorf(\"error reading set end: %s\")" << endl <<
+ indent() << " return fmt.Errorf(\"error reading set end: %s\", err)" << endl <<
indent() << "}" << endl;
} else if (ttype->is_list()) {
out <<
indent() << "if err := iprot.ReadListEnd(); err != nil {" << endl <<
- indent() << " return fmt.Errorf(\"error reading list end: %s\")" << endl <<
+ indent() << " return fmt.Errorf(\"error reading list end: %s\", err)" << endl <<
indent() << "}" << endl;
}
}
@@ -2857,21 +2857,21 @@
type_to_enum(((t_map*)ttype)->get_key_type()) << ", " <<
type_to_enum(((t_map*)ttype)->get_val_type()) << ", " <<
"len(" << prefix << ")); err != nil {" << endl <<
- indent() << " return fmt.Errorf(\"error writing map begin: %s\")" << endl <<
+ indent() << " return fmt.Errorf(\"error writing map begin: %s\", err)" << endl <<
indent() << "}" << endl;
} else if (ttype->is_set()) {
out <<
indent() << "if err := oprot.WriteSetBegin(" <<
type_to_enum(((t_set*)ttype)->get_elem_type()) << ", " <<
"len(" << prefix << ")); err != nil {" << endl <<
- indent() << " return fmt.Errorf(\"error writing set begin: %s\")" << endl <<
+ indent() << " return fmt.Errorf(\"error writing set begin: %s\", err)" << endl <<
indent() << "}" << endl;
} else if (ttype->is_list()) {
out <<
indent() << "if err := oprot.WriteListBegin(" <<
type_to_enum(((t_list*)ttype)->get_elem_type()) << ", " <<
"len(" << prefix << ")); err != nil {" << endl <<
- indent() << " return fmt.Errorf(\"error writing list begin: %s\")" << endl <<
+ indent() << " return fmt.Errorf(\"error writing list begin: %s\", err)" << endl <<
indent() << "}" << endl;
} else {
throw "compiler error: Invalid type in generate_serialize_container '" + ttype->get_name() + "' for prefix '" + prefix + "'";
@@ -2907,17 +2907,17 @@
if (ttype->is_map()) {
out <<
indent() << "if err := oprot.WriteMapEnd(); err != nil {" << endl <<
- indent() << " return fmt.Errorf(\"error writing map end: %s\")" << endl <<
+ indent() << " return fmt.Errorf(\"error writing map end: %s\", err)" << endl <<
indent() << "}" << endl;
} else if (ttype->is_set()) {
out <<
indent() << "if err := oprot.WriteSetEnd(); err != nil {" << endl <<
- indent() << " return fmt.Errorf(\"error writing set end: %s\")" << endl <<
+ indent() << " return fmt.Errorf(\"error writing set end: %s\", err)" << endl <<
indent() << "}" << endl;
} else if (ttype->is_list()) {
out <<
indent() << "if err := oprot.WriteListEnd(); err != nil {" << endl <<
- indent() << " return fmt.Errorf(\"error writing list end: %s\")" << endl <<
+ indent() << " return fmt.Errorf(\"error writing list end: %s\", err)" << endl <<
indent() << "}" << endl;
}
}