Browse Source

[inliner] Don't remove unassigned variables

Mario 1 year ago
parent
commit
d2e799597c
1 changed files with 6 additions and 1 deletions
  1. 6 1
      src/optimization/inlineConstructors.ml

+ 6 - 1
src/optimization/inlineConstructors.ml

@@ -625,7 +625,12 @@ let inline_constructors ctx original_e =
 				default_case e
 				default_case e
 			end
 			end
 		| TVar(v, None) when v.v_id < 0 ->
 		| TVar(v, None) when v.v_id < 0 ->
-			(get_iv_var_decls (get_iv v.v_id)), None
+			let iv = get_iv v.v_id in
+			if iv.iv_state = IVSUnassigned then
+				(* If the variable is unassigned, leave the expression unchanged *)
+				([e], None)
+			else
+				(get_iv_var_decls (iv)), None
 		| TVar(v,Some e) when v.v_id < 0 ->
 		| TVar(v,Some e) when v.v_id < 0 ->
 			let el = (get_iv_var_decls (get_iv v.v_id)) in
 			let el = (get_iv_var_decls (get_iv v.v_id)) in
 			let e,_ = (final_map ~unwrap_block:true e) in (e@el, None)
 			let e,_ = (final_map ~unwrap_block:true e) in (e@el, None)