summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/PrintPure.ml38
-rw-r--r--compiler/TranslateCore.ml46
2 files changed, 42 insertions, 42 deletions
diff --git a/compiler/PrintPure.ml b/compiler/PrintPure.ml
index 41f1e3dd..77d25823 100644
--- a/compiler/PrintPure.ml
+++ b/compiler/PrintPure.ml
@@ -144,17 +144,18 @@ let mk_ast_formatter (type_decls : T.type_decl TypeDeclId.Map.t)
(trait_decls : A.trait_decl TraitDeclId.Map.t)
(trait_impls : A.trait_impl TraitImplId.Map.t) (type_params : type_var list)
(const_generic_params : const_generic_var list) : ast_formatter =
- let type_var_id_to_string vid =
- let var = T.TypeVarId.nth type_params vid in
- type_var_to_string var
- in
- let const_generic_var_id_to_string vid =
- let var = T.ConstGenericVarId.nth const_generic_params vid in
- const_generic_var_to_string var
- in
- let type_decl_id_to_string def_id =
- let def = T.TypeDeclId.Map.find def_id type_decls in
- name_to_string def.name
+ let ({
+ type_var_id_to_string;
+ type_decl_id_to_string;
+ const_generic_var_id_to_string;
+ global_decl_id_to_string;
+ trait_decl_id_to_string;
+ trait_impl_id_to_string;
+ trait_clause_id_to_string;
+ }
+ : type_formatter) =
+ mk_type_formatter type_decls global_decls trait_decls trait_impls
+ type_params const_generic_params
in
let adt_variant_to_string =
Print.Types.type_ctx_to_adt_variant_to_string_fun type_decls
@@ -173,21 +174,6 @@ let mk_ast_formatter (type_decls : T.type_decl TypeDeclId.Map.t)
let def = FunDeclId.Map.find def_id fun_decls in
fun_name_to_string def.name
in
- let global_decl_id_to_string def_id =
- let def = GlobalDeclId.Map.find def_id global_decls in
- global_name_to_string def.name
- in
- let trait_decl_id_to_string def_id =
- let def = TraitDeclId.Map.find def_id trait_decls in
- name_to_string def.name
- in
- let trait_impl_id_to_string def_id =
- let def = TraitImplId.Map.find def_id trait_impls in
- name_to_string def.name
- in
- let trait_clause_id_to_string id =
- Print.PT.trait_clause_id_to_pretty_string id
- in
{
type_var_id_to_string;
const_generic_var_id_to_string;
diff --git a/compiler/TranslateCore.ml b/compiler/TranslateCore.ml
index ba5e237b..1b1572d6 100644
--- a/compiler/TranslateCore.ml
+++ b/compiler/TranslateCore.ml
@@ -18,25 +18,37 @@ type fun_context = {
}
[@@deriving show]
+type trait_decls_context = C.trait_decls_context [@@deriving show]
+type trait_impls_context = C.trait_impls_context [@@deriving show]
type global_context = C.global_context [@@deriving show]
type trans_ctx = {
type_context : type_context;
fun_context : fun_context;
global_context : global_context;
+ trait_decls_context : trait_decls_context;
+ trait_impls_context : trait_impls_context;
}
type fun_and_loops = Pure.fun_decl * Pure.fun_decl list
type pure_fun_translation_no_loops = Pure.fun_decl * Pure.fun_decl list
type pure_fun_translation = fun_and_loops * fun_and_loops list
-let type_decl_to_string (ctx : trans_ctx) (def : Pure.type_decl) : string =
- let type_params = def.type_params in
- let cg_params = def.const_generic_params in
+let trans_ctx_to_type_formatter (ctx : trans_ctx)
+ (type_params : Pure.type_var list)
+ (const_generic_params : Pure.const_generic_var list) :
+ PrintPure.type_formatter =
let type_decls = ctx.type_context.type_decls in
let global_decls = ctx.global_context.global_decls in
+ let trait_decls = ctx.trait_decls_context.trait_decls in
+ let trait_impls = ctx.trait_impls_context.trait_impls in
+ PrintPure.mk_type_formatter type_decls global_decls trait_decls trait_impls
+ type_params const_generic_params
+
+let type_decl_to_string (ctx : trans_ctx) (def : Pure.type_decl) : string =
+ let generics = def.generics in
let fmt =
- PrintPure.mk_type_formatter type_decls global_decls type_params cg_params
+ trans_ctx_to_type_formatter ctx generics.types generics.const_generics
in
PrintPure.type_decl_to_string fmt def
@@ -44,27 +56,29 @@ let type_id_to_string (ctx : trans_ctx) (id : Pure.TypeDeclId.id) : string =
Print.fun_name_to_string
(Pure.TypeDeclId.Map.find id ctx.type_context.type_decls).name
-let fun_sig_to_string (ctx : trans_ctx) (sg : Pure.fun_sig) : string =
- let type_params = sg.type_params in
- let cg_params = sg.const_generic_params in
+let trans_ctx_to_ast_formatter (ctx : trans_ctx)
+ (type_params : Pure.type_var list)
+ (const_generic_params : Pure.const_generic_var list) :
+ PrintPure.ast_formatter =
let type_decls = ctx.type_context.type_decls in
let fun_decls = ctx.fun_context.fun_decls in
let global_decls = ctx.global_context.global_decls in
+ let trait_decls = ctx.trait_decls_context.trait_decls in
+ let trait_impls = ctx.trait_impls_context.trait_impls in
+ PrintPure.mk_ast_formatter type_decls fun_decls global_decls trait_decls
+ trait_impls type_params const_generic_params
+
+let fun_sig_to_string (ctx : trans_ctx) (sg : Pure.fun_sig) : string =
+ let generics = sg.generics in
let fmt =
- PrintPure.mk_ast_formatter type_decls fun_decls global_decls type_params
- cg_params
+ trans_ctx_to_ast_formatter ctx generics.types generics.const_generics
in
PrintPure.fun_sig_to_string fmt sg
let fun_decl_to_string (ctx : trans_ctx) (def : Pure.fun_decl) : string =
- let type_params = def.signature.type_params in
- let cg_params = def.signature.const_generic_params in
- let type_decls = ctx.type_context.type_decls in
- let fun_decls = ctx.fun_context.fun_decls in
- let global_decls = ctx.global_context.global_decls in
+ let generics = def.signature.generics in
let fmt =
- PrintPure.mk_ast_formatter type_decls fun_decls global_decls type_params
- cg_params
+ trans_ctx_to_ast_formatter ctx generics.types generics.const_generics
in
PrintPure.fun_decl_to_string fmt def