From: Jens Geyer Date: Wed, 27 Mar 2013 18:32:41 +0000 (+0200) Subject: THRIFT-1904 Incorrect code is generated for typedefs which use included types X-Git-Tag: 0.9.1~150 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=45766049e0ed4e7fbef11e79ef417a6f970ba696;p=common%2Fthrift.git THRIFT-1904 Incorrect code is generated for typedefs which use included types Patch: Jens Geyer --- diff --git a/compiler/cpp/src/generate/t_delphi_generator.cc b/compiler/cpp/src/generate/t_delphi_generator.cc index d27676c2..0ab8d4d5 100644 --- a/compiler/cpp/src/generate/t_delphi_generator.cc +++ b/compiler/cpp/src/generate/t_delphi_generator.cc @@ -526,8 +526,15 @@ void t_delphi_generator::close_generator() { f_all << "end." << endl; f_all.close(); - if( ! typedefs_pending.empty()) - printf("pending typedefs with unresolved references are left\n"); + if( ! typedefs_pending.empty()) { + printf("Typedefs with unresolved type references left:\n"); + for( std::list::iterator iter = typedefs_pending.begin(); typedefs_pending.end() != iter; ++iter) { + printf( "typedef %s.%s = %s\n", + (*iter)->get_type()->get_program()->get_name().c_str(), + (*iter)->get_type()->get_name().c_str(), + (*iter)->get_symbolic().c_str()); + } + } } void t_delphi_generator::delphi_type_usings( ostream& out) { @@ -584,6 +591,14 @@ bool t_delphi_generator::is_fully_defined_type( t_type* ttype) { return is_fully_defined_type( tlist->get_elem_type()); } + if( (NULL != ttype->get_program()) && (ttype->get_program() != program_)) { + t_scope* scope = ttype->get_program()->scope(); + if( NULL != scope->get_type( ttype->get_name())) { + printf("type %s found in included scope %s\n", ttype->get_name().c_str(), ttype->get_program()->get_name().c_str()); + return true; + } + } + return (1 == types_known[ type_name(ttype)]); }