THRIFT-3230: transform typedef when getting type name
Client: Python
Patch: 软件工程师李飛 <lifei@7v1.net>
This closes #545
Python compiler generates wrong code if there is function throwing a typedef of exception with another namespace. We should use the real type name instead of the name of typedef.
diff --git a/compiler/cpp/src/generate/t_py_generator.cc b/compiler/cpp/src/generate/t_py_generator.cc
index 08a3536..2002c1e 100644
--- a/compiler/cpp/src/generate/t_py_generator.cc
+++ b/compiler/cpp/src/generate/t_py_generator.cc
@@ -2339,6 +2339,10 @@
}
string t_py_generator::type_name(t_type* ttype) {
+ while (ttype->is_typedef()) {
+ ttype = ((t_typedef*)ttype)->get_type();
+ }
+
t_program* program = ttype->get_program();
if (ttype->is_service()) {
return get_real_py_module(program, gen_twisted_) + "." + ttype->get_name();