From 5c940ca42fb28b9f9bb2af9747a9230baa5772e3 Mon Sep 17 00:00:00 2001 From: Takafumi Saikawa Date: Mon, 29 Aug 2022 15:17:50 +0900 Subject: Introduce wrapper functions for level management ([Ctype.wrap_def], etc) and for type variable scoping ([Typetexp.wrap_type_variable_scope]). The older API ([Ctype.(begin_def,end_def)], [Typetexp.(narrow,widen)], etc.) is now removed. The scope of some level management is refined (in particular for [type_application]). --- debugger/loadprinter.ml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'debugger') diff --git a/debugger/loadprinter.ml b/debugger/loadprinter.ml index 5009623a89..ff2eed190b 100644 --- a/debugger/loadprinter.ml +++ b/debugger/loadprinter.ml @@ -90,14 +90,13 @@ let eval_value_path env path = (* Install, remove a printer (as in toplevel/topdirs) *) let match_printer_type desc make_printer_type = - Ctype.begin_def(); - let ty_arg = Ctype.newvar() in - Ctype.unify Env.empty - (make_printer_type ty_arg) - (Ctype.instance desc.val_type); - Ctype.end_def(); - Ctype.generalize ty_arg; - ty_arg + Ctype.wrap_def ~post:Ctype.generalize begin fun () -> + let ty_arg = Ctype.newvar() in + Ctype.unify Env.empty + (make_printer_type ty_arg) + (Ctype.instance desc.val_type); + ty_arg + end let find_printer_type lid = match Env.find_value_by_name lid Env.empty with -- cgit v1.2.1