src: cleanup importations
[nit.git] / src / flow.nit
index 05a40b9..4717d9b 100644 (file)
 # Intraprocedural static flow.
 module flow
 
-import parser
-import toolcontext
 import scope
-import phase
 
 redef class ToolContext
        var flow_phase: Phase = new FlowPhase(self, [scope_phase])
@@ -193,7 +190,7 @@ class FlowContext
        var previous: Array[FlowContext] = new Array[FlowContext]
 
        # Additional reachable flow that loop up to self.
-       # Loops apears in `loop`, `while`, `for`, closure and with `continue`
+       # Loops apears in `loop`, `while`, `for`, and with `continue`
        var loops: Array[FlowContext] = new Array[FlowContext]
 
        private var is_marked_unreachable: Bool = false
@@ -485,6 +482,21 @@ redef class AOrExpr
        end
 end
 
+redef class AImpliesExpr
+       redef fun accept_flow_visitor(v)
+       do
+               var after_expr = v.visit_expr(self.n_expr)
+
+               v.current_flow_context = after_expr.when_true
+               var after_expr2 = v.visit_expr(self.n_expr2)
+
+               var merge_true = v.make_merge_flow(after_expr.when_false, after_expr2.when_true)
+               merge_true.name = "OR TRUE"
+
+               v.make_true_false_flow(merge_true, after_expr2.when_false)
+       end
+end
+
 redef class AAndExpr
        redef fun accept_flow_visitor(v)
        do
@@ -533,29 +545,6 @@ redef class ANeExpr
        end
 end
 
-redef class AClosureCallExpr
-       redef fun accept_flow_visitor(v)
-       do
-               super
-               # FIXME: break closure call?
-               # v.make_unreachable_flow
-       end
-end
-
-redef class AClosureDef
-       redef fun accept_flow_visitor(v)
-       do
-               var before_loop = v.make_sub_flow
-
-               v.enter_visit(self.n_expr)
-
-               var after_block = v.current_flow_context
-               before_loop.add_loop(after_block)
-
-               v.make_merge_flow(v.current_flow_context, before_loop)
-       end
-end
-
 redef class AIsaExpr
        redef fun accept_flow_visitor(v)
        do