diff options
| author | Brian Campbell | 2017-11-15 15:56:29 +0000 |
|---|---|---|
| committer | Brian Campbell | 2017-11-15 15:56:29 +0000 |
| commit | 053d5b3cf84e7a6ed3e0abd6b4565fdaf900e785 (patch) | |
| tree | efee1b5cfcd080afeef92f0aaf1fbdc0d4f216e6 /src | |
| parent | d108602fb75ea792c128a0b1ee25cd296447a372 (diff) | |
For loops bind a type variable
Diffstat (limited to 'src')
| -rw-r--r-- | src/monomorphise.ml | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/monomorphise.ml b/src/monomorphise.ml index 9029142f..c826936c 100644 --- a/src/monomorphise.ml +++ b/src/monomorphise.ml @@ -1982,7 +1982,11 @@ let rec analyse_exp env assigns (E_aux (e,(l,annot)) as exp) = | E_for (var,efrom,eto,eby,ord,body) -> let d1,assigns,r1 = non_det [efrom;eto;eby] in let assigns = remove_assigns [body] " assigned in a loop" in - let env' = { env with control_deps = dmerge env.control_deps (merge_deps d1) } in + let d = dmerge env.control_deps (merge_deps d1) in + let loop_kid = mk_kid ("loop_" ^ string_of_id var) in + let env' = { env with + control_deps = d; + kid_deps = KBindings.add loop_kid d env.kid_deps} in let d2,a2,r2 = analyse_exp env' assigns body in (dempty, assigns, merge r1 r2) | E_vector es -> |
