rta: resolve the open-types in a depth-first order to reach limit faster
[nit.git] / src / rapid_type_analysis.nit
index f763a56..2d621e8 100644 (file)
@@ -132,7 +132,7 @@ class RapidTypeAnalysis
                var types = typeset.to_a
                (new CachedAlphaComparator).sort(types)
                var res = new CsvDocument
-               res.format = new CsvFormat('"', ';', "\n")
+               res.separator = ';'
                res.header = ["Type", "Resolution", "Liveness", "Cast-liveness"]
                for t in types do
                        var reso
@@ -314,7 +314,9 @@ class RapidTypeAnalysis
                                if not check_depth(rt) then continue
                                #print "{ot}/{t} -> {rt}"
                                live_types.add(rt)
-                               todo_types.add(rt)
+                               # unshift means a deep-first visit.
+                               # So that the `check_depth` limit is reached sooner.
+                               todo_types.unshift(rt)
                        end
                end
                #print "MType {live_types.length}: {live_types.join(", ")}"
@@ -585,6 +587,11 @@ redef class AStringFormExpr
                v.add_type(native)
                var prop = v.get_method(native, "to_s_full")
                v.add_monomorphic_send(native, prop)
+               v.add_callsite(to_re)
+               v.add_callsite(ignore_case)
+               v.add_callsite(newline)
+               v.add_callsite(extended)
+               v.add_callsite(to_bytes_with_copy)
        end
 end