THRIFT-2793 Go compiler produces uncompilable code
Client: Go
Pacth: Frank Schroeder
diff --git a/compiler/cpp/src/generate/t_go_generator.cc b/compiler/cpp/src/generate/t_go_generator.cc
index 36a4e36..ec45e40 100644
--- a/compiler/cpp/src/generate/t_go_generator.cc
+++ b/compiler/cpp/src/generate/t_go_generator.cc
@@ -2793,7 +2793,7 @@
indent() << "if err != nil {" << 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() << "tSet := make(map[" << type_to_go_key_type(t->get_elem_type()->get_true_type()) << "]bool, size)" << endl <<
indent() << prefix << eq << " " << (pointer_field ? "&" : "") << "tSet" << endl;
} else if (ttype->is_list()) {
out <<
@@ -3412,7 +3412,7 @@
t_type* resolved_type = type;
while (resolved_type->is_typedef()) {
- resolved_type = ((t_typedef*)resolved_type)->get_type();
+ resolved_type = ((t_typedef*)resolved_type)->get_type()->get_true_type();
}
if (resolved_type->is_map() || resolved_type->is_list() || resolved_type->is_set()) {
@@ -3423,7 +3423,7 @@
((t_base_type*) resolved_type)->is_binary())
return "string";
- return type_to_go_type(type);
+ return type_to_go_type(type, true);
}
/**
@@ -3484,11 +3484,11 @@
return maybe_pointer + string("map[") + keyType + "]" + valueType;
} else if (type->is_set()) {
t_set* t = (t_set*)type;
- string elemType = type_to_go_key_type(t->get_elem_type());
+ string elemType = type_to_go_key_type(t->get_elem_type()->get_true_type());
return maybe_pointer + string("map[") + elemType + string("]bool");
} else if (type->is_list()) {
t_list* t = (t_list*)type;
- string elemType = type_to_go_type(t->get_elem_type(), true);
+ string elemType = type_to_go_type(t->get_elem_type()->get_true_type(), true);
return maybe_pointer + string("[]") + elemType;
} else if (type->is_typedef()) {
return maybe_pointer + publicize(type_name(type));