rta: add `live_methods_to_tree` to provide human-readable infos on methods
authorJean Privat <jean@pryen.org>
Wed, 12 Mar 2014 17:41:07 +0000 (13:41 -0400)
committerJean Privat <jean@pryen.org>
Wed, 12 Mar 2014 17:41:07 +0000 (13:41 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/rapid_type_analysis.nit

index 0c50081..00cb5b7 100644 (file)
@@ -29,6 +29,7 @@ import typing
 import auto_super_init
 
 import csv # for live_types_to_csv
+import ordered_tree # for live_methods_to_tree
 
 redef class ModelBuilder
        fun do_rapid_type_analysis(mainmodule: MModule): RapidTypeAnalysis
@@ -104,6 +105,30 @@ class RapidTypeAnalysis
                return res
        end
 
+       # Return a ready-to-save OrderedTree object that agregates infomration about live methods.
+       # Note: methods are listed in an alphanumeric order to improve human reading.
+       fun live_methods_to_tree: OrderedTree[Object]
+       do
+               var tree = new OrderedTree[Object]
+               for x in live_methods do
+                       var xn = x.full_name
+                       tree.add(null, xn)
+                       for z in x.mpropdefs do
+                               var zn = z.to_s
+                               if live_methoddefs.has(z) then
+                                       tree.add(xn, zn)
+                                       if live_super_sends.has(z) then
+                                               tree.add(zn, zn + "(super)")
+                                       end
+                               else if live_super_sends.has(z) then
+                                       tree.add(xn, zn + "(super)")
+                               end
+                       end
+               end
+               tree.sort_with(alpha_comparator)
+               return tree
+       end
+
        # Methods that are are still candidate to the try_send
        private var totry_methods = new HashSet[MMethod]