contrib/jwrapper: generate classes in linearization order
authorAlexis Laferrière <alexis.laf@xymus.net>
Mon, 3 Aug 2015 13:42:20 +0000 (09:42 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Wed, 5 Aug 2015 01:41:50 +0000 (21:41 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

contrib/jwrapper/src/code_generator.nit

index b832268..0e5fe3b 100644 (file)
@@ -65,10 +65,14 @@ class CodeGenerator
                file_out.write imports.join("\n")
                file_out.write "\n"
 
-               for key, jclass in model.classes do
-                       # Skip anonymous classes
-                       if jclass.class_type.is_anonymous then continue
+               # Sort classes from top-level classes (java.lang.Object) to leaves
+               var standard_classes = new Array[JavaClass]
+               for name, jclass in model.classes do
+                       if not jclass.class_type.is_anonymous then standard_classes.add jclass
+               end
+               var linearized = model.class_hierarchy.linearize(standard_classes)
 
+               for jclass in linearized do
                        # Skip classes with an invalid name at the Java language level
                        if jclass.class_type.extern_equivalent.has("-") then continue