From 2b442c6019f073de0a262d6ddf084d3c8f40bf4f Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Sat, 10 Feb 2018 12:45:54 +0800 Subject: [PATCH] Change .merlin generation to not use PKG We know the build directory of exteranl packages, hence we should simply use it as the build and source dir (B and S respectively). --- src/merlin.ml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/merlin.ml b/src/merlin.ml index 7d7e549a..09abcf99 100644 --- a/src/merlin.ml +++ b/src/merlin.ml @@ -48,18 +48,18 @@ let dot_merlin sctx ~dir ~scope ({ requires; flags; _ } as t) = requires &&& flags >>^ (fun (libs, flags) -> let ppx_flags = ppx_flags sctx ~dir ~scope ~src_dir:remaindir t in - let internals, externals = - List.fold_left libs ~init:([], []) ~f:(fun (internals, externals) -> + let libs = + List.fold_left libs ~init:[] ~f:(fun acc -> + let serialize_path = Path.reach ~from:remaindir in function | Lib.Internal (path, lib) -> let spath = - Path.drop_optional_build_context path - |> Path.reach ~from:remaindir - in - let bpath = Path.reach (Lib.lib_obj_dir path lib) ~from:remaindir in - ("S " ^ spath) :: ("B " ^ bpath) :: internals, externals + serialize_path (Path.drop_optional_build_context path) in + let bpath = serialize_path (Lib.lib_obj_dir path lib) in + ("S " ^ spath) :: ("B " ^ bpath) :: acc | Lib.External pkg -> - internals, ("PKG " ^ Findlib.Package.name pkg) :: externals + let external_dir = serialize_path (Findlib.Package.dir pkg) in + ("S " ^ external_dir) :: ("B " ^ external_dir) :: acc ) in let source_dirs = @@ -85,8 +85,7 @@ let dot_merlin sctx ~dir ~scope ({ requires; flags; _ } as t) = List.concat [ source_dirs ; objs_dirs - ; internals - ; externals + ; libs ; flags ; ppx_flags ]