From a74e715de590aeb5d40aad480596565e3623e4c9 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Wed, 12 Mar 2014 13:41:07 -0400 Subject: [PATCH] rta: add `live_methods_to_tree` to provide human-readable infos on methods Signed-off-by: Jean Privat --- src/rapid_type_analysis.nit | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/rapid_type_analysis.nit b/src/rapid_type_analysis.nit index 0c50081..00cb5b7 100644 --- a/src/rapid_type_analysis.nit +++ b/src/rapid_type_analysis.nit @@ -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] -- 1.7.9.5