Deduplicate render type
diff --git a/compiler/cpp/src/thrift/generate/t_erl_generator.cc b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
index ac5f066..c3e5245 100644
--- a/compiler/cpp/src/thrift/generate/t_erl_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_erl_generator.cc
@@ -133,8 +133,10 @@
std::string render_member_value(t_field* field);
std::string render_member_requiredness(t_field* field);
+ std::string render_typedef_type(t_typedef* ttypedef);
+
+ std::string render_type(t_type* type);
std::string render_base_type(t_type* type);
- std::string render_typedef_type(t_type* ttype);
std::string render_string_type();
// std::string render_default_value(t_type* type);
@@ -486,8 +488,7 @@
* @param ttypedef The type definition
*/
void t_erl_generator::generate_typedef(t_typedef* ttypedef) {
- t_type* type = ttypedef->get_type();
- f_types_hrl_file_ << "-type " << type_name(ttypedef) << "() :: " << render_typedef_type(type) << ".\n" << "\n";
+ f_types_hrl_file_ << "-type " << type_name(ttypedef) << "() :: " << render_typedef_type(ttypedef) << ".\n" << "\n";
}
@@ -810,11 +811,15 @@
string t_erl_generator::render_member_type(t_field* field) {
t_type* type = field->get_type();
+ return render_type(type);
+}
+
+string t_erl_generator::render_type(t_type* type) {
if (type->is_base_type()) {
return render_base_type(type);
} else if (type->is_enum()) {
return type_name(type) + "()";
- } else if (type->is_struct() || type->is_typedef()) {
+ } else if (type->is_struct() || type->is_xception() || type->is_typedef()) {
return type_name(type) + "()";
} else if (type->is_map()) {
if (maps_) {
@@ -874,26 +879,9 @@
}
}
-string t_erl_generator::render_typedef_type(t_type* ttype) {
- if (ttype->is_base_type()) {
- return render_base_type(ttype);
- } else if (ttype->is_enum()) {
- return type_name(ttype) + "()";
- } else if (ttype->is_struct() || ttype->is_xception() || ttype->is_typedef()) {
- return type_name(ttype) + "()";
- } else if (ttype->is_map()) {
- if (maps_) {
- return "map()";
- } else {
- return "dict:dict()";
- }
- } else if (ttype->is_set()) {
- return "sets:set()";
- } else if (ttype->is_list()) {
- return "list()";
- } else {
- throw "compiler error: unsupported type " + ttype->get_name();
- }
+string t_erl_generator::render_typedef_type(t_typedef* ttypedef) {
+ t_type* type = ttypedef->get_type();
+ return render_type(type);
}
/**