redef class AForExpr
redef fun after_simple_misc(v)
do
- n_expr.warn_parentheses(v)
v.check_do_expr(n_block)
end
end
+redef class AForGroup
+ redef fun after_simple_misc(v)
+ do
+ n_expr.warn_parentheses(v)
+ end
+end
+
redef class AWithExpr
redef fun after_simple_misc(v)
do
end
redef class AForExpr
- # The automatic variables in order
- var variables: nullable Array[Variable]
-
# The break escape mark associated with the 'for'
var break_mark: nullable EscapeMark
redef fun accept_scope_visitor(v)
do
- v.enter_visit(n_expr)
+ for g in n_groups do
+ v.enter_visit(g.n_expr)
+ end
# Protect automatic variables
v.scopes.unshift(new Scope)
- # Create the automatic variables
- var variables = new Array[Variable]
- self.variables = variables
- for nid in n_ids do
- var va = new Variable(nid.text)
- v.register_variable(nid, va)
- variables.add(va)
+ for g in n_groups do
+ # Create the automatic variables
+ var variables = new Array[Variable]
+ g.variables = variables
+ for nid in g.n_ids do
+ var va = new Variable(nid.text)
+ v.register_variable(nid, va)
+ variables.add(va)
+ end
end
var escapemark = v.make_escape_mark(n_label, true)
end
end
+redef class AForGroup
+ # The automatic variables in order
+ var variables: nullable Array[Variable]
+end
+
redef class AWithExpr
# The break escape mark associated with the 'with'
var break_mark: nullable EscapeMark
end
redef class AForExpr
+ redef fun accept_typing(v)
+ do
+ v.has_loop = true
+
+ for g in n_groups do
+ var mtype = v.visit_expr(g.n_expr)
+ if mtype == null then return
+ g.do_type_iterator(v, mtype)
+ end
+
+ v.visit_stmt(n_block)
+
+ self.mtype = n_block.mtype
+ self.is_typed = true
+ end
+end
+
+redef class AForGroup
var coltype: nullable MClassType
var method_iterator: nullable CallSite
self.method_successor = v.get_method(self, vtype, "successor", false)
end
end
-
- redef fun accept_typing(v)
- do
- v.has_loop = true
- var mtype = v.visit_expr(n_expr)
- if mtype == null then return
-
- self.do_type_iterator(v, mtype)
-
- v.visit_stmt(n_block)
-
- self.mtype = n_block.mtype
- self.is_typed = true
- end
end
redef class AWithExpr