contrib/jwrapper: use a MultiHashMap to store methods and their signatures
authorAlexis Laferrière <alexis.laf@xymus.net>
Sun, 19 Jul 2015 16:38:41 +0000 (12:38 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Mon, 20 Jul 2015 21:34:28 +0000 (17:34 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

contrib/jwrapper/src/javap_visitor.nit
contrib/jwrapper/src/model.nit

index 165dfea..6fcd361 100644 (file)
@@ -254,7 +254,9 @@ redef class Nproperty_declaration_method
                v.declaration_type = null
 
                if v.method_return_type.has_unresolved_types then v.method_return_type.resolve_types(v.generic_map)
-               v.java_class.add_method(v.method_id, v.method_return_type, v.method_params)
+
+               var method = new JavaMethod(v.method_return_type, v.method_params.clone)
+               v.java_class.methods[v.method_id].add method
 
                v.method_params.clear
                v.method_id = ""
index 422c051..31b8c6b 100644 (file)
@@ -17,6 +17,8 @@
 # Contains the java and nit type representation used to convert java to nit code
 module model
 
+import more_collections
+
 import jtype_converter
 
 class JavaType
@@ -291,17 +293,10 @@ class JavaClass
        var attributes = new HashMap[String, JavaType]
 
        # Methods of this class organized by their name
-       var methods = new HashMap[String, Array[JavaMethod]]
+       var methods = new MultiHashMap[String, JavaMethod]
 
        var unknown_types = new HashSet[JavaType]
        var imports = new HashSet[NitModule]
-
-       fun add_method(id: String, return_type: JavaType, params: Array[JavaType])
-       do
-               var signatures = methods.get_or_default(id, new Array[JavaMethod])
-               signatures.add(new JavaMethod(return_type, new Array[JavaType].from(params)))
-               methods[id] = signatures
-       end
 end
 
 # A Java method, with its signature