contrib/jwrapper: copy class hierarchy over to Nit
authorAlexis Laferrière <alexis.laf@xymus.net>
Mon, 3 Aug 2015 13:46:53 +0000 (09:46 -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 41346e7..17acf0c 100644 (file)
@@ -156,7 +156,28 @@ class CodeGenerator
                var java_type = java_class.class_type
                var nit_type = model.java_to_nit_type(java_type)
 
-               var supers = ["super JavaObject"]
+               var super_java_types = new HashSet[JavaType]
+               super_java_types.add_all java_class.extends
+               super_java_types.add_all java_class.implements
+
+               var supers = new Array[String]
+               var effective_supers = 0
+               for java_super in super_java_types do
+                       var nit_super = model.java_to_nit_type(java_super)
+
+                       # Comment out unknown types
+                       var c = ""
+                       if not nit_super.is_known and comment_unknown_types then c = "# "
+
+                       supers.add "{c}super {nit_super}"
+                       if c != "# " then effective_supers += 1
+               end
+
+               if effective_supers == 0 then
+                       if java_class.class_type.package_name == "java.lang.Object" then
+                               supers.add "super JavaObject"
+                       else supers.add "super Java_lang_Object"
+               end
 
                file_out.write """
 # Java class: {{{java_type}}}