X-Git-Url: https://git.xandkar.net/?p=tiger.ml.git;a=blobdiff_plain;f=compiler%2Fsrc%2Flib%2Ftiger%2Ftiger_env_value.ml;fp=compiler%2Fsrc%2Flib%2Ftiger%2Ftiger_env_value.ml;h=ad274638137d7ef5369993f81a04b7a6b27b6410;hp=80f145e490981f38474459f8efdd7e8d02320993;hb=cc540a7e2dfcee4411953075210a64de874b91e5;hpb=21d0f0503ea169988685a4f39d0e32b2b097dae6 diff --git a/compiler/src/lib/tiger/tiger_env_value.ml b/compiler/src/lib/tiger/tiger_env_value.ml index 80f145e..ad27463 100644 --- a/compiler/src/lib/tiger/tiger_env_value.ml +++ b/compiler/src/lib/tiger/tiger_env_value.ml @@ -2,14 +2,20 @@ module List = ListLabels module Map = Tiger_map module Symbol = Tiger_symbol +module Temp = Tiger_temp +module Translate = Tiger_translate module Type = Tiger_env_type type t = | Var of - {ty : Type.t} + { access : Tiger_translate.access + ; ty : Tiger_env_type.t + } | Fun of - { formals : Type.t list - ; result : Type.t + { formals : Tiger_env_type.t list + ; result : Tiger_env_type.t + ; level : Tiger_translate.Level.t + ; label : Tiger_temp.Label.t } type env = @@ -29,7 +35,9 @@ let built_in = ] |> List.map ~f:(fun (name, formals, result) -> let key = Symbol.of_string name in - let value = Fun {formals; result} in + let level = Translate.Level.init in + let label = Temp.Label.gen () in + let value = Fun {formals; result; level; label} in (key, value) ) |> Map.of_list