diff --git a/src/lib/uTop.ml b/src/lib/uTop.ml index 9a9c3750..7284d1fb 100644 --- a/src/lib/uTop.ml +++ b/src/lib/uTop.ml @@ -360,10 +360,15 @@ let check_phrase phrase = with_default_loc loc (fun () -> let punit = (Pat.construct unit None) in +#if OCAML_VERSION >= (5, 5, 0) + let si = Str.module_ ~loc (Mb.mk ~loc (with_loc loc (Some "_")) (Mod.structure (item :: items))) in + let body = (Exp.struct_item ~loc si (Exp.construct unit None)) in +#else let body = (Exp.letmodule ~loc:loc (with_loc loc (Some "_")) (Mod.structure (item :: items)) (Exp.construct unit None)) in +#endif Str.eval (UTop_compat.Exp.fun_ ~loc punit body)) in let check_phrase = Ptop_def [top_def] in diff --git a/src/lib/uTop_complete.ml b/src/lib/uTop_complete.ml index b34db3ab..554f7909 100644 --- a/src/lib/uTop_complete.ml +++ b/src/lib/uTop_complete.ml @@ -390,12 +390,16 @@ let add_fields_of_type decl acc = List.fold_left (fun acc field -> add (field_name field) acc) acc fields #if OCAML_VERSION >= (5, 2, 0) | Type_abstract _ -> -#else +#else | Type_abstract -> #endif acc | Type_open -> acc +#if OCAML_VERSION >= (5, 5, 0) + | Type_external _ -> + acc +#endif let add_names_of_type decl acc = match decl.type_kind with @@ -409,12 +413,17 @@ let add_names_of_type decl acc = List.fold_left (fun acc field -> add (field_name field) acc) acc fields #if OCAML_VERSION >= (5, 2, 0) | Type_abstract _ -> -#else +#else | Type_abstract -> #endif acc | Type_open -> acc +#if OCAML_VERSION >= (5, 5, 0) + | Type_external _ -> + acc +#endif + let path_of_mty_alias = function | Mty_alias path -> path @@ -527,7 +536,11 @@ let list_global_names () = loop (add (Ident.name id) acc) summary | Env.Env_cltype(summary, id, _) -> loop (add (Ident.name id) acc) summary +#if OCAML_VERSION >= (5, 5, 0) + | Env.Env_not_aliasable(summary, id) -> +#else | Env.Env_functor_arg(summary, id) -> +#endif loop (add (Ident.name id) acc) summary | Env.Env_persistent (summary, id) -> loop (add (Ident.name id) acc) summary @@ -575,7 +588,11 @@ let list_global_fields () = loop (add (Ident.name id) acc) summary | Env.Env_module(summary, id, _, _) -> loop (add (Ident.name id) acc) summary +#if OCAML_VERSION >= (5, 5, 0) + | Env.Env_not_aliasable(summary, id) -> +#else | Env.Env_functor_arg(summary, id) -> +#endif loop (add (Ident.name id) acc) summary | Env.Env_modtype(summary, id, _) -> loop (add (Ident.name id) acc) summary diff --git a/src/lib/uTop_main.ml b/src/lib/uTop_main.ml index 37946fd3..e72c16eb 100644 --- a/src/lib/uTop_main.ml +++ b/src/lib/uTop_main.ml @@ -380,7 +380,11 @@ end = struct | Env.Env_class (s, _, _) | Env.Env_cltype (s, _, _) | Env.Env_open (s, _) - | Env.Env_functor_arg (s, _) +#if OCAML_VERSION >= (5, 5, 0) + | Env.Env_not_aliasable(s, _) +#else + | Env.Env_functor_arg(s, _) +#endif | Env.Env_constraints (s, _) -> scan_summary last s in