From bb243b3aef0d17fc82808274d0b3cf92ac3c07d4 Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Tue, 13 Jul 2010 14:26:38 -0700 Subject: Desugar the head stmts all the way out of STMT_for, rather than stashing them in the node. That's only necessary for STMT_while. --- src/boot/me/trans.ml | 3 +-- src/boot/me/type.ml | 2 +- src/boot/me/typestate.ml | 2 +- src/boot/me/walk.ml | 3 +-- 4 files changed, 4 insertions(+), 6 deletions(-) (limited to 'src/boot/me') diff --git a/src/boot/me/trans.ml b/src/boot/me/trans.ml index 85dd5265..df0801b9 100644 --- a/src/boot/me/trans.ml +++ b/src/boot/me/trans.ml @@ -4021,10 +4021,9 @@ let trans_visitor let dst_slot_id = (fst (fo.Ast.for_slot)).id in let dst_slot = get_slot cx dst_slot_id in let dst_cell = cell_of_block_slot dst_slot_id in - let (head_stmts, seq) = fo.Ast.for_seq in + let seq = fo.Ast.for_seq in let (seq_cell, seq_ty) = trans_lval seq in let unit_ty = seq_unit_ty seq_ty in - Array.iter trans_stmt head_stmts; iter_seq_parts ty_params seq_cell seq_cell unit_ty begin fun _ src_cell unit_ty _ -> diff --git a/src/boot/me/type.ml b/src/boot/me/type.ml index b27e68dc..701bee1a 100644 --- a/src/boot/me/type.ml +++ b/src/boot/me/type.ml @@ -1263,7 +1263,7 @@ let process_crate (cx:ctxt) (crate:Ast.crate) : unit = let mem_tv = ref TYSPEC_all in let seq_tv = ref (TYSPEC_collection mem_tv) in let (si, _) = fo.Ast.for_slot in - let (_, seq) = fo.Ast.for_seq in + let seq = fo.Ast.for_seq in unify_lval rval_ctx seq seq_tv; unify_slot lval_ctx si.node (Some si.id) mem_tv diff --git a/src/boot/me/typestate.ml b/src/boot/me/typestate.ml index 6e0b57e1..b9a189c2 100644 --- a/src/boot/me/typestate.ml +++ b/src/boot/me/typestate.ml @@ -533,7 +533,7 @@ let condition_assigning_visitor | Ast.STMT_for fo -> let (si, _) = fo.Ast.for_slot in - let (_, lval) = fo.Ast.for_seq in + let lval = fo.Ast.for_seq in let precond = slot_inits (lval_slots cx lval) in let block_entry_state = [| Constr_init si.id |] in raise_pre_post_cond s.id precond; diff --git a/src/boot/me/walk.ml b/src/boot/me/walk.ml index 0b60c832..49db07e5 100644 --- a/src/boot/me/walk.ml +++ b/src/boot/me/walk.ml @@ -419,9 +419,8 @@ and walk_stmt (s:Ast.stmt_for) : unit = let (si,_) = s.Ast.for_slot in - let (ss,lv) = s.Ast.for_seq in + let lv = s.Ast.for_seq in walk_slot_identified v si; - Array.iter (walk_stmt v) ss; walk_lval v lv; walk_block v s.Ast.for_body in -- cgit v1.2.3