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 d27676c..0ab8d4d 100644
--- a/compiler/cpp/src/generate/t_delphi_generator.cc
+++ b/compiler/cpp/src/generate/t_delphi_generator.cc
@@ -526,8 +526,15 @@
   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<t_typedef*>::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 @@
     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)]);
 }