Simplify more Result code with Result.List.map
Signed-off-by: Rudi Grinberg <rudi.grinberg@gmail.com>
This commit is contained in:
parent
dc681a5961
commit
a60fe76117
27
src/lib.ml
27
src/lib.ml
|
@ -733,13 +733,8 @@ and available_internal db name ~stack =
|
||||||
| Error _ -> false
|
| Error _ -> false
|
||||||
|
|
||||||
and resolve_simple_deps db names ~allow_private_deps ~stack =
|
and resolve_simple_deps db names ~allow_private_deps ~stack =
|
||||||
let rec loop acc = function
|
Result.List.map names ~f:(fun (loc, name) ->
|
||||||
| [] -> Ok (List.rev acc)
|
resolve_dep db name ~allow_private_deps ~loc ~stack)
|
||||||
| (loc, name) :: names ->
|
|
||||||
resolve_dep db name ~allow_private_deps ~loc ~stack >>= fun x ->
|
|
||||||
loop (x :: acc) names
|
|
||||||
in
|
|
||||||
loop [] names
|
|
||||||
|
|
||||||
and resolve_complex_deps db deps ~allow_private_deps ~stack =
|
and resolve_complex_deps db deps ~allow_private_deps ~stack =
|
||||||
let res, resolved_selects =
|
let res, resolved_selects =
|
||||||
|
@ -819,12 +814,10 @@ and resolve_user_deps db deps ~allow_private_deps ~pps ~stack =
|
||||||
closure_with_overlap_checks None pps ~stack
|
closure_with_overlap_checks None pps ~stack
|
||||||
in
|
in
|
||||||
let deps =
|
let deps =
|
||||||
(deps >>= fun deps ->
|
deps >>= fun deps ->
|
||||||
pps >>= Result.concat_map ~f:(fun pp -> pp.ppx_runtime_deps)
|
pps >>= Result.concat_map ~f:(fun pp -> pp.ppx_runtime_deps)
|
||||||
>>| fun pp_deps -> List.rev_append deps pp_deps)
|
>>| List.rev_append deps
|
||||||
>>= fun deps ->
|
>>= Result.List.map ~f:(check_private_deps ~loc ~allow_private_deps)
|
||||||
List.map deps ~f:(check_private_deps ~loc ~allow_private_deps)
|
|
||||||
|> Result.all
|
|
||||||
in
|
in
|
||||||
(deps, pps)
|
(deps, pps)
|
||||||
in
|
in
|
||||||
|
@ -1021,14 +1014,8 @@ module DB = struct
|
||||||
; reason
|
; reason
|
||||||
}))
|
}))
|
||||||
|
|
||||||
let find_many =
|
let find_many t =
|
||||||
let rec loop t acc = function
|
Result.List.map ~f:(fun name -> resolve t (Loc.none, name))
|
||||||
| [] -> Ok (List.rev acc)
|
|
||||||
| name :: names ->
|
|
||||||
resolve t (Loc.none, name) >>= fun lib ->
|
|
||||||
loop t (lib ::acc) names
|
|
||||||
in
|
|
||||||
fun t names -> loop t [] names
|
|
||||||
|
|
||||||
let available t name = available_internal t name ~stack:Dep_stack.empty
|
let available t name = available_internal t name ~stack:Dep_stack.empty
|
||||||
|
|
||||||
|
|
|
@ -67,3 +67,14 @@ let rec iter t ~f =
|
||||||
iter xs ~f
|
iter xs ~f
|
||||||
|
|
||||||
type ('a, 'error) result = ('a, 'error) t
|
type ('a, 'error) result = ('a, 'error) t
|
||||||
|
|
||||||
|
module List = struct
|
||||||
|
let map t ~f =
|
||||||
|
let rec loop acc = function
|
||||||
|
| [] -> Ok (List.rev acc)
|
||||||
|
| x :: xs ->
|
||||||
|
f x >>= fun x ->
|
||||||
|
loop (x :: acc) xs
|
||||||
|
in
|
||||||
|
loop [] t
|
||||||
|
end
|
||||||
|
|
|
@ -35,3 +35,7 @@ val errorf : ('a, unit, string, (_, string) t) format4 -> 'a
|
||||||
|
|
||||||
(** For compatibility with some other code *)
|
(** For compatibility with some other code *)
|
||||||
type ('a, 'error) result = ('a, 'error) t
|
type ('a, 'error) result = ('a, 'error) t
|
||||||
|
|
||||||
|
module List : sig
|
||||||
|
val map : 'a list -> f:('a -> ('b, 'e) t) -> ('b list, 'e) t
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in New Issue