rta: drop local `is_valid_type` and use `is_legal_in` from `model`
authorJean Privat <jean@pryen.org>
Tue, 9 Aug 2016 15:19:21 +0000 (11:19 -0400)
committerJean Privat <jean@pryen.org>
Tue, 9 Aug 2016 15:19:21 +0000 (11:19 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/rapid_type_analysis.nit

index c5ddc4a..b59474f 100644 (file)
@@ -313,7 +313,7 @@ class RapidTypeAnalysis
                                if not ot.can_resolve_for(t, t, mainmodule) then continue
                                var rt = ot.anchor_to(mainmodule, t)
                                if live_types.has(rt) then continue
-                               if not is_valid_type(rt) then continue
+                               if not rt.is_legal_in(mainmodule) then continue
                                if not check_depth(rt) then continue
                                #print "{ot}/{t} -> {rt}"
                                live_types.add(rt)
@@ -330,7 +330,7 @@ class RapidTypeAnalysis
                        for t in live_types do
                                if not ot.can_resolve_for(t, t, mainmodule) then continue
                                var rt = ot.anchor_to(mainmodule, t)
-                               if not is_valid_type(rt) then continue
+                               if not rt.is_legal_in(mainmodule) then continue
                                live_cast_types.add(rt)
                                #print "  {ot}/{t} -> {rt}"
                        end
@@ -338,16 +338,6 @@ class RapidTypeAnalysis
                #print "cast MType {live_cast_types.length}: {live_cast_types.join(", ")}"
        end
 
-       # Quick and dirty check that a forced type resolution gives a legal type
-       # TODO: move up in the model and kill `can_resolve_for`
-       private fun is_valid_type(mtype: MType): Bool
-       do
-               if mtype isa MGenericType then
-                       return mtype.is_subtype(mainmodule, null, mtype.mclass.intro.bound_mtype)
-               end
-               return true
-       end
-
        private fun check_depth(mtype: MClassType): Bool
        do
                var d = mtype.length