Skip to content

Commit c2f5203

Browse files
v0.18~preview.130.72+278
1 parent 60d3c91 commit c2f5203

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+5390
-3096
lines changed

lint/dune

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
(library
22
(name ppx_base_lint)
33
(kind ppx_rewriter)
4-
(libraries compiler-libs.common ppxlib.stdppx ppxlib ppxlib_jane ppx_cold)
4+
(libraries compiler-libs.common ppx_cold ppxlib ppxlib_jane ppxlib.stdppx)
55
(preprocess no_preprocessing))

ppx/src/dune

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(library
22
(name ppx_base_internal)
33
(kind ppx_deriver)
4-
(libraries ppxlib.stdppx ppxlib ppxlib_jane)
4+
(libraries ppxlib ppxlib_jane ppxlib.stdppx)
55
(preprocess
66
(pps ppxlib.metaquot)))

shadow-stdlib/gen/dune

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(executables
22
(modes byte exe)
33
(names gen)
4-
(libraries str compiler-libs.common)
4+
(libraries compiler-libs.common str)
55
(link_flags -linkall)
66
(preprocess no_preprocessing))
77

src/array.ml

Lines changed: 48 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ include Array
88

99
type 'a t = 'a array
1010

11-
type%template 'a t = 'a array
12-
[@@kind k = (float64, bits32, bits64, word, immediate, immediate64)]
11+
[%%template
12+
[@@@kind_set.define values = (value_with_imm, value mod external_, value mod external64)]
13+
14+
type%template 'a t = 'a array [@@kind k = (base_non_value, immediate, immediate64)]
1315

1416
[%%rederive.portable
1517
type nonrec 'a t = 'a array [@@deriving globalize, sexp ~stackify, sexp_grammar]]
@@ -43,8 +45,7 @@ type%template 'a t = 'a array
4345
- http://www.sorting-algorithms.com/quick-sort-3-way *)
4446

4547
module%template.portable
46-
[@kind k = (value, immediate, immediate64, value mod external_, value mod external64)]
47-
[@modality p] Sorter (S : sig
48+
[@kind k = values] [@modality p] Sorter (S : sig
4849
type 'a t
4950

5051
val get : 'a t -> int -> 'a
@@ -294,9 +295,7 @@ struct
294295
end
295296
[@@inline]
296297

297-
module%template
298-
[@kind k = (value, immediate, immediate64, value mod external_, value mod external64)] Sort =
299-
Sorter [@kind k] [@modality portable] (struct
298+
module%template [@kind k = values] Sort = Sorter [@kind k] [@modality portable] (struct
300299
type nonrec 'a t = 'a t
301300

302301
let get = unsafe_get
@@ -312,9 +311,7 @@ let%template get_opt arr n : (_ Option.t[@kind k]) =
312311
Some ((unsafe_get [@mode c]) arr n)
313312
(* SAFETY: bounds checked above *) [@exclave_if_stack a]
314313
else None
315-
[@@mode c = (uncontended, shared)]
316-
[@@kind k = (value, immediate, immediate64, float64, bits32, bits64, word)]
317-
[@@alloc a = (heap, stack)]
314+
[@@mode c = (uncontended, shared)] [@@kind k = base_with_imm] [@@alloc a = (heap, stack)]
318315
;;
319316

320317
let is_sorted t ~compare =
@@ -367,23 +364,14 @@ let raise_length_mismatch name n1 n2 =
367364
;;
368365

369366
[%%template
370-
let length t = length t
371-
[@@kind k = (float64, bits32, bits64, word, immediate, immediate64)]
372-
;;
367+
let length t = length t [@@kind k = (base_non_value, immediate, immediate64)]
373368

374-
[@@@kind.default k1 = (value, immediate, immediate64, float64, bits32, bits64, word)]
369+
[@@@kind.default k1 = base_with_imm]
375370

376371
let to_array t = t
377372
let of_array t = t
378373
let is_empty t = (length [@kind k1]) t = 0
379374

380-
let sum (type a) (module M : Container.Summable with type t = a[@kind k1]) t ~f =
381-
let toplevel_get = Toplevel_value.get [@kind k1] in
382-
(fold [@kind k1 k1]) t ~init:((toplevel_get [@inlined]) M.zero) ~f:(fun n a ->
383-
M.( + ) n (f a))
384-
[@nontail]
385-
;;
386-
387375
let for_all t ~f =
388376
let i = ref (length t - 1) in
389377
let result = ref true in
@@ -558,7 +546,16 @@ let of_list_rev (l : (_ List.Constructors.t[@kind k1])) =
558546
t
559547
;;
560548

561-
[@@@kind.default k2 = (value, immediate, immediate64, float64, bits32, bits64, word)]
549+
[%%template
550+
[@@@kind.default k1 = k1]
551+
[@@@kind.default k2 = base]
552+
553+
let sum (type sum) (module M : Container.Summable with type t = sum[@kind k2]) t ~f =
554+
let toplevel_get = Toplevel_value.get [@kind k2] in
555+
(fold [@kind k1 k2]) t ~init:((toplevel_get [@inlined]) M.zero) ~f:(fun n a ->
556+
M.( + ) n (f a))
557+
[@nontail]
558+
;;
562559

563560
let iteri_until t ~f ~finish =
564561
let length = length t in
@@ -664,7 +661,9 @@ let foldi t ~init ~f =
664661
else acc
665662
in
666663
(loop [@inlined]) 0 init [@nontail]
667-
;;
664+
;;]
665+
666+
[@@@kind.default k2 = base_with_imm]
668667

669668
let filter_mapi t ~f =
670669
let r = ref [||] in
@@ -742,7 +741,7 @@ let for_all2_exn t1 t2 ~f =
742741
;;]]
743742

744743
[%%template
745-
[@@@kind.default k1 = (value, immediate, immediate64, float64, bits32, bits64, word)]
744+
[@@@kind.default k1 = base_with_imm]
746745

747746
let filter t ~f =
748747
(filter_map [@kind k1 k1]) t ~f:(fun x -> if f x then Some x else None) [@nontail]
@@ -761,21 +760,8 @@ let globalize = (globalize_array [@kind k1])
761760
let equal = (equal_array [@kind k1] [@mode m])
762761
let compare = (compare_array [@kind k1] [@mode m])]
763762

764-
[@@@kind.default k2 = (value, immediate, immediate64, float64, bits32, bits64, word)]
765-
766-
let of_list_rev_map xs ~f =
767-
let t = (of_list_map [@kind k1 k2]) xs ~f in
768-
(rev_inplace [@kind k2]) t;
769-
t
770-
;;
771-
772-
let of_list_rev_mapi xs ~f =
773-
let t = (of_list_mapi [@kind k1 k2]) xs ~f in
774-
(rev_inplace [@kind k2]) t;
775-
t
776-
;;
777-
778-
[@@@kind.default k3 = (value, immediate, immediate64, float64, bits32, bits64, word)]
763+
[%%template
764+
[@@@kind.default k1 = k1, k2 = base, k3 = base]
779765

780766
let foldi_until t ~init ~f ~finish =
781767
let length = length t in
@@ -799,8 +785,24 @@ let fold_until t ~init ~f ~finish =
799785
~init
800786
~f:(fun _i acc x -> f acc x)
801787
~finish:(fun _i acc -> finish acc) [@nontail]
788+
;;]
789+
790+
[@@@kind.default k2 = base_with_imm]
791+
792+
let of_list_rev_map xs ~f =
793+
let t = (of_list_map [@kind k1 k2]) xs ~f in
794+
(rev_inplace [@kind k2]) t;
795+
t
802796
;;
803797

798+
let of_list_rev_mapi xs ~f =
799+
let t = (of_list_mapi [@kind k1 k2]) xs ~f in
800+
(rev_inplace [@kind k2]) t;
801+
t
802+
;;
803+
804+
[@@@kind.default k3 = base_with_imm]
805+
804806
let partition_mapi t ~f =
805807
let (both : (_ Either0.t[@kind k2 k3]) t) = (mapi [@kind k1 value]) t ~f in
806808
let firsts =
@@ -821,7 +823,7 @@ let partition_map t ~f =
821823
;;]
822824

823825
[%%template
824-
[@@@kind.default k = (value, immediate, immediate64, float64, bits32, bits64, word)]
826+
[@@@kind.default k = base_with_imm]
825827

826828
let partitioni_tf t ~f =
827829
(partition_mapi [@kind k k k]) t ~f:(fun i x -> if f i x then First x else Second x)
@@ -849,7 +851,7 @@ let sexp_of_t (sexp_of_elt : _ -> Sexp0.t) t : Sexp0.t =
849851
in
850852
List ((loop [@inlined]) (length t - 1) []))
851853
[@exclave_if_stack a]
852-
[@@kind k = (float64, bits32, bits64, word)]
854+
[@@kind k = base_non_value]
853855
;;]
854856

855857
[%%template
@@ -860,7 +862,7 @@ let t_of_sexp elt_of_sexp (sexp : Sexp0.t) =
860862
| List [] -> [||]
861863
| List (_ :: _ as l) -> (of_list_map [@kind value k]) l ~f:elt_of_sexp
862864
| Atom _ -> of_sexp_error "array_of_sexp: list needed" sexp
863-
[@@kind k = (float64, bits32, bits64, word)]
865+
[@@kind k = base_non_value]
864866
;;]
865867

866868
(* We generated [findi]s that return [value & value]s, but for backwards compatibility we
@@ -1103,12 +1105,7 @@ let transpose_exn tt =
11031105
| Some tt' -> tt'
11041106
;;
11051107

1106-
let%template[@kind
1107-
k1 = (value, float64, bits32, bits64, word, immediate, immediate64)
1108-
, k2 = (value, float64, bits32, bits64, word, immediate, immediate64)] map
1109-
t
1110-
~f
1111-
=
1108+
let%template[@kind k1 = base_with_imm, k2 = base_with_imm] map t ~f =
11121109
(map [@kind k1 k2]) t ~f
11131110
;;
11141111

@@ -1164,15 +1161,10 @@ let sub t ~pos ~len = sub t ~pos ~len
11641161
let invariant invariant_a t = iter t ~f:invariant_a
11651162

11661163
module Private = struct
1167-
module%template
1168-
[@kind k = (value, immediate, immediate64, value mod external_, value mod external64)] Sort =
1169-
Sort
1170-
[@kind k]
1164+
module%template [@kind k = values] Sort = Sort [@kind k]
11711165

1172-
module%template.portable
1173-
[@kind k = (value, immediate, immediate64, value mod external_, value mod external64)]
1174-
[@modality p] Sorter =
1166+
module%template.portable [@kind k = values] [@modality p] Sorter =
11751167
Sorter
11761168
[@kind k]
11771169
[@modality p]
1178-
end
1170+
end]

0 commit comments

Comments
 (0)