Skip to content

Commit 35f6203

Browse files
v0.18~preview.130.74+175
1 parent 6f78e19 commit 35f6203

Some content is hidden

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

106 files changed

+6200
-3518
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
@@ -10,8 +10,10 @@ include Array
1010

1111
type ('a : any mod separable) t = 'a array
1212

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

1618
[%%rederive.portable
1719
type nonrec 'a t = 'a array [@@deriving globalize, sexp ~stackify, sexp_grammar]]
@@ -45,8 +47,7 @@ type%template ('a : k) t = 'a array
4547
- http://www.sorting-algorithms.com/quick-sort-3-way *)
4648

4749
module%template.portable
48-
[@kind k = (value, immediate, immediate64, value mod external_, value mod external64)]
49-
[@modality p] Sorter (S : sig
50+
[@kind k = values] [@modality p] Sorter (S : sig
5051
type ('a : k) t
5152

5253
val get : local_ 'a t -> int -> 'a
@@ -296,9 +297,7 @@ struct
296297
end
297298
[@@inline]
298299

299-
module%template
300-
[@kind k = (value, immediate, immediate64, value mod external_, value mod external64)] Sort =
301-
Sorter [@kind k] [@modality portable] (struct
300+
module%template [@kind k = values] Sort = Sorter [@kind k] [@modality portable] (struct
302301
type nonrec ('a : k) t = 'a t
303302

304303
let get = unsafe_get
@@ -314,9 +313,7 @@ let%template get_opt arr n : (_ Option.t[@kind k]) =
314313
Some ((unsafe_get [@mode c]) arr n)
315314
(* SAFETY: bounds checked above *) [@exclave_if_stack a]
316315
else None
317-
[@@mode c = (uncontended, shared)]
318-
[@@kind k = (value, immediate, immediate64, float64, bits32, bits64, word)]
319-
[@@alloc a = (heap, stack)]
316+
[@@mode c = (uncontended, shared)] [@@kind k = base_with_imm] [@@alloc a = (heap, stack)]
320317
;;
321318

322319
let is_sorted t ~compare =
@@ -369,23 +366,14 @@ let raise_length_mismatch name n1 n2 =
369366
;;
370367

371368
[%%template
372-
let length t = length t
373-
[@@kind k = (float64, bits32, bits64, word, immediate, immediate64)]
374-
;;
369+
let length t = length t [@@kind k = (base_non_value, immediate, immediate64)]
375370

376-
[@@@kind.default k1 = (value, immediate, immediate64, float64, bits32, bits64, word)]
371+
[@@@kind.default k1 = base_with_imm]
377372

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

382-
let sum (type a : k1) (module M : Container.Summable with type t = a[@kind k1]) t ~f =
383-
let toplevel_get = Toplevel_value.get [@kind k1] in
384-
(fold [@kind k1 k1]) t ~init:((toplevel_get [@inlined]) M.zero) ~f:(fun n a ->
385-
M.( + ) n (f a))
386-
[@nontail]
387-
;;
388-
389377
let for_all t ~f =
390378
let i = ref (length t - 1) in
391379
let result = ref true in
@@ -560,7 +548,16 @@ let of_list_rev (l : (_ List.Constructors.t[@kind k1])) =
560548
t
561549
;;
562550

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

565562
let iteri_until t ~f ~finish =
566563
let length = length t in
@@ -666,7 +663,9 @@ let foldi t ~init ~f =
666663
else acc
667664
in
668665
(loop [@inlined]) 0 init [@nontail]
669-
;;
666+
;;]
667+
668+
[@@@kind.default k2 = base_with_imm]
670669

671670
let filter_mapi t ~f =
672671
let r = ref [||] in
@@ -744,7 +743,7 @@ let for_all2_exn t1 t2 ~f =
744743
;;]]
745744

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

749748
let filter t ~f =
750749
(filter_map [@kind k1 k1]) t ~f:(fun x -> if f x then Some x else None) [@nontail]
@@ -763,21 +762,8 @@ let globalize = (globalize_array [@kind k1])
763762
let equal = (equal_array [@kind k1] [@mode m])
764763
let compare = (compare_array [@kind k1] [@mode m])]
765764

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

782768
let foldi_until t ~init ~f ~finish =
783769
let length = length t in
@@ -801,8 +787,24 @@ let fold_until t ~init ~f ~finish =
801787
~init
802788
~f:(fun _i acc x -> f acc x)
803789
~finish:(fun _i acc -> finish acc) [@nontail]
790+
;;]
791+
792+
[@@@kind.default k2 = base_with_imm]
793+
794+
let of_list_rev_map xs ~f =
795+
let t = (of_list_map [@kind k1 k2]) xs ~f in
796+
(rev_inplace [@kind k2]) t;
797+
t
804798
;;
805799

800+
let of_list_rev_mapi xs ~f =
801+
let t = (of_list_mapi [@kind k1 k2]) xs ~f in
802+
(rev_inplace [@kind k2]) t;
803+
t
804+
;;
805+
806+
[@@@kind.default k3 = base_with_imm]
807+
806808
let partition_mapi t ~f =
807809
let (both : (_ Either0.t[@kind k2 k3]) t) = (mapi [@kind k1 value]) t ~f in
808810
let firsts =
@@ -823,7 +825,7 @@ let partition_map t ~f =
823825
;;]
824826

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

828830
let partitioni_tf t ~f =
829831
(partition_mapi [@kind k k k]) t ~f:(fun i x -> if f i x then First x else Second x)
@@ -851,7 +853,7 @@ let sexp_of_t (sexp_of_elt : _ @ m -> Sexp0.t @ m) (t @ m) : Sexp0.t =
851853
in
852854
List ((loop [@inlined]) (length t - 1) []))
853855
[@exclave_if_stack a]
854-
[@@kind k = (float64, bits32, bits64, word)]
856+
[@@kind k = base_non_value]
855857
;;]
856858

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

868870
(* We generated [findi]s that return [value & value]s, but for backwards compatibility we
@@ -1107,12 +1109,7 @@ let transpose_exn tt =
11071109

11081110
[@@@warning "-incompatible-with-upstream"]
11091111

1110-
let%template[@kind
1111-
k1 = (value, float64, bits32, bits64, word, immediate, immediate64)
1112-
, k2 = (value, float64, bits32, bits64, word, immediate, immediate64)] map
1113-
t
1114-
~f
1115-
=
1112+
let%template[@kind k1 = base_with_imm, k2 = base_with_imm] map t ~f =
11161113
(map [@kind k1 k2]) t ~f
11171114
;;
11181115

@@ -1168,17 +1165,12 @@ let sub t ~pos ~len = sub t ~pos ~len
11681165
let invariant invariant_a t = iter t ~f:invariant_a
11691166

11701167
module Private = struct
1171-
module%template
1172-
[@kind k = (value, immediate, immediate64, value mod external_, value mod external64)] Sort =
1173-
Sort
1174-
[@kind k]
1168+
module%template [@kind k = values] Sort = Sort [@kind k]
11751169

1176-
module%template.portable
1177-
[@kind k = (value, immediate, immediate64, value mod external_, value mod external64)]
1178-
[@modality p] Sorter =
1170+
module%template.portable [@kind k = values] [@modality p] Sorter =
11791171
Sorter
11801172
[@kind k]
11811173
[@modality p]
1182-
end
1174+
end]
11831175

11841176
let array_should_be_polymorphic_over_value_or_null = ()

0 commit comments

Comments
 (0)