diff generator/dgenerator.cpp @ 363:3b0545d4d479

Fixed enums in designated interfaces
author Max Samukha <maxter@maxter.com>
date Thu, 10 Jun 2010 00:57:32 +0300
parents beaf4a2974d7
children a084e2df3776
line wrap: on
line diff
--- a/generator/dgenerator.cpp	Wed Jun 09 16:37:24 2010 +0300
+++ b/generator/dgenerator.cpp	Thu Jun 10 00:57:32 2010 +0300
@@ -148,7 +148,14 @@
             if (option & EnumAsInts)
                 s = "int";
             else
-                s = d_type->typeEntry()->qualifiedTargetLangName();
+            {
+                // Hack around forward-referencing the implementing class in an interface.
+                if (context->typeEntry()->designatedInterface() && d_type->typeEntry()->javaQualifier() == context->name())
+                    s = d_type->name();
+                else
+                    s = d_type->typeEntry()->qualifiedTargetLangName();
+            }
+
         }
     } else if (d_type->isFlags()) { // qtd2 begin
         if (d_type->isFlags() && ((FlagsTypeEntry *)d_type->typeEntry())->forceInteger()) {