Skip to content

Commit 5f664df

Browse files
authored
Merge pull request #2671 from BuckleScript/fix_2664
address #2664
2 parents 2721d8d + 7afe0d3 commit 5f664df

18 files changed

+2033
-1580
lines changed

jscomp/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,10 +257,10 @@ SYNTAX_SRCS= \
257257
ast_util\
258258
ast_tdcls\
259259
ast_primitive\
260+
ast_tuple_pattern_flatten\
260261
ast_exp_apply\
261262
ast_exp_extension\
262263
ast_core_type_class_type\
263-
ast_tuple_pattern_flatten\
264264
ppx_entry\
265265
# not a good name ast_util
266266
SYNTAX_CMXS=$(addprefix syntax/, $(addsuffix .cmx, $(SYNTAX_SRCS)))

jscomp/all.depend

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -246,9 +246,13 @@ syntax/ast_tdcls.cmx : ext/ext_list.cmx syntax/bs_ast_mapper.cmx \
246246
syntax/ast_attributes.cmx syntax/ast_tdcls.cmi
247247
syntax/ast_primitive.cmx : syntax/external_process.cmx \
248248
syntax/bs_ast_mapper.cmx syntax/ast_primitive.cmi
249+
syntax/ast_tuple_pattern_flatten.cmx : ext/ext_list.cmx \
250+
syntax/bs_ast_mapper.cmx syntax/bs_ast_invariant.cmx \
251+
syntax/ast_tuple_pattern_flatten.cmi
249252
syntax/ast_exp_apply.cmx : ext/literals.cmx ext/ext_list.cmx \
250253
syntax/bs_ast_mapper.cmx syntax/bs_ast_invariant.cmx syntax/ast_util.cmx \
251-
syntax/ast_literal.cmx syntax/ast_attributes.cmx syntax/ast_exp_apply.cmi
254+
syntax/ast_tuple_pattern_flatten.cmx syntax/ast_literal.cmx \
255+
syntax/ast_attributes.cmx syntax/ast_exp_apply.cmi
252256
syntax/ast_exp_extension.cmx : ext/literals.cmx ext/ext_string.cmx \
253257
ext/ext_ref.cmx syntax/bs_ast_mapper.cmx syntax/ast_util.cmx \
254258
syntax/ast_payload.cmx syntax/ast_literal.cmx syntax/ast_derive.cmx \
@@ -257,8 +261,6 @@ syntax/ast_core_type_class_type.cmx : ext/literals.cmx ext/ext_ref.cmx \
257261
ext/ext_list.cmx syntax/bs_ast_mapper.cmx syntax/ast_util.cmx \
258262
syntax/ast_literal.cmx syntax/ast_comb.cmx syntax/ast_attributes.cmx \
259263
syntax/ast_core_type_class_type.cmi
260-
syntax/ast_tuple_pattern_flatten.cmx : ext/ext_list.cmx \
261-
syntax/bs_ast_mapper.cmx syntax/ast_tuple_pattern_flatten.cmi
262264
syntax/ppx_entry.cmx : ext/string_map.cmx ext/literals.cmx \
263265
ext/ext_string.cmx syntax/bs_ast_mapper.cmx syntax/bs_ast_invariant.cmx \
264266
syntax/ast_util.cmx syntax/ast_utf8_string_interp.cmx \
@@ -301,10 +303,10 @@ syntax/ast_util.cmi : syntax/bs_ast_mapper.cmi syntax/ast_payload.cmi
301303
syntax/ast_tdcls.cmi : syntax/bs_ast_mapper.cmi syntax/ast_structure.cmi \
302304
syntax/ast_signature.cmi
303305
syntax/ast_primitive.cmi : syntax/bs_ast_mapper.cmi
306+
syntax/ast_tuple_pattern_flatten.cmi : syntax/bs_ast_mapper.cmi
304307
syntax/ast_exp_apply.cmi : syntax/bs_ast_mapper.cmi
305308
syntax/ast_exp_extension.cmi : syntax/bs_ast_mapper.cmi
306309
syntax/ast_core_type_class_type.cmi : syntax/bs_ast_mapper.cmi
307-
syntax/ast_tuple_pattern_flatten.cmi : syntax/bs_ast_mapper.cmi
308310
syntax/ppx_entry.cmi :
309311
depends/bs_exception.cmi :
310312
depends/ast_extract.cmi : ext/string_map.cmi ext/string_hashtbl.cmi \

jscomp/core/bs_conditional_initial.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
let setup_env () =
2727
#if BS_DEBUG then
28-
Js_config.set_debug_file "tuple_alloc.ml";
28+
Js_config.set_debug_file "pipe_syntax.ml";
2929
#end
3030
Lexer.replace_directive_bool "BS" true;
3131
Lexer.replace_directive_string "BS_VERSION" Bs_version.version

jscomp/core/lam.ml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1102,6 +1102,10 @@ let apply fn args loc status : t =
11021102
| exception _ ->
11031103
Lapply { fn; args; loc; status }
11041104
end
1105+
(* | Lfunction {params;body} when Ext_list.same_length params args ->
1106+
Ext_list.fold_right2 (fun p arg acc ->
1107+
Llet(Strict,p,arg,acc)
1108+
) params args body *) (* TODO: more rigirous analysis on [let_kind] *)
11051109
| _ ->
11061110
Lapply { fn; args; loc ; status }
11071111

jscomp/core/lam_pass_deep_flatten.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ let deep_flatten
157157
*)
158158
let (res,l) = flatten acc arg in
159159
begin match id.name, str, res with
160-
| ("match" | "include"),
160+
| ("match" | "include"| "param"),
161161
(Alias | Strict | StrictOpt),
162162
Lprim {primitive = Pmakeblock(_,_, Immutable); args} ->
163163
begin match eliminate_tuple id body Int_map.empty with

jscomp/others/belt_Map.ml

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -17,154 +17,154 @@
1717
*)
1818
module Int = Belt_MapInt
1919
(** specalized when key type is [string], more efficient
20-
than the gerneic type *)
20+
than the gerneic type *)
2121
module String = Belt_MapString
2222

2323
(** seprate function from data, a more verbsoe but slightly
2424
more efficient
25-
*)
25+
*)
2626
module Dict = Belt_MapDict
2727

2828
module N = Belt_MapDict
2929
module A = Belt_Array
3030

3131
type ('key, 'id ) id = ('key, 'id) Belt_Id.comparable
3232
type ('key, 'id ) cmp = ('key, 'id) Belt_Id.cmp
33-
module S = struct
33+
module S = struct
3434
type ('k,'v,'id) t = {
3535
cmp: ('k,'id) cmp;
3636
data: ('k,'v, 'id) Dict.t
3737
}
3838
[@@bs.deriving abstract]
3939
end
4040

41-
type ('k, 'v, 'id ) t = ('k, 'v, 'id) S.t
41+
type ('k, 'v, 'id ) t = ('k, 'v, 'id) S.t
4242

4343
let fromArray (type k) (type idx) data ~(id : (k,idx) id) =
4444
let module M = (val id) in
45-
let cmp = M.cmp in
46-
S.t ~cmp ~data:(Dict.fromArray ~cmp data)
45+
let cmp = M.cmp in
46+
S.t ~cmp ~data:(Dict.fromArray ~cmp data)
4747

48-
let ofArray = fromArray
48+
let ofArray = fromArray
4949

50-
let remove m x =
51-
let cmp, odata = S.cmp m, S.data m in
50+
let remove m x =
51+
let cmp, odata = m |. S.(cmp, data) in
5252
let newData = Dict.remove odata x ~cmp in
5353
if newData == odata then m
54-
else S.t ~cmp ~data:newData
54+
else S.t ~cmp ~data:newData
5555

56-
let removeMany m x =
57-
let cmp, odata = S.cmp m, S.data m in
56+
let removeMany m x =
57+
let cmp, odata = m |. (S.cmp, S.data) in
5858
let newData = Dict.removeMany odata x ~cmp in
5959
S.t ~cmp ~data:newData
6060

61-
let set m key d =
62-
let cmp = S.cmp m in
63-
S.t ~cmp ~data:(Dict.set ~cmp (S.data m) key d)
61+
let set m key d =
62+
let cmp = S.cmp m in
63+
S.t ~cmp ~data:(Dict.set ~cmp (S.data m) key d)
6464

65-
let mergeMany m e =
66-
let cmp = S.cmp m in
65+
let mergeMany m e =
66+
let cmp = S.cmp m in
6767
S.t ~cmp ~data:(Dict.mergeMany ~cmp (S.data m) e)
6868

69-
let updateU m key f =
70-
let cmp = S.cmp m in
69+
let updateU m key f =
70+
let cmp = S.cmp m in
7171
S.t ~cmp ~data:(Dict.updateU ~cmp (S.data m) key f )
7272
let update m key f = updateU m key (fun [@bs] a -> f a )
73-
let split m x =
74-
let cmp = S.cmp m in
75-
let (l,r),b = Dict.split ~cmp (S.data m) x in
76-
(S.t ~cmp ~data:l, S.t ~cmp ~data:r), b
73+
let split m x =
74+
let cmp = S.cmp m in
75+
let (l,r),b = Dict.split ~cmp (S.data m) x in
76+
(S.t ~cmp ~data:l, S.t ~cmp ~data:r), b
7777

78-
let mergeU s1 s2 f =
79-
let cmp = S.cmp s1 in
78+
let mergeU s1 s2 f =
79+
let cmp = S.cmp s1 in
8080
S.t ~cmp ~data:(Dict.mergeU ~cmp (S.data s1) (S.data s2) f)
8181

82-
let merge s1 s2 f =
82+
let merge s1 s2 f =
8383
mergeU s1 s2 (fun [@bs] a b c -> f a b c)
8484

8585
let make (type key) (type idx) ~(id: (key, idx) id) =
86-
let module M = (val id) in
86+
let module M = (val id) in
8787
S.t ~cmp:M.cmp ~data:Dict.empty
8888

89-
let isEmpty map =
89+
let isEmpty map =
9090
Dict.isEmpty (S.data map)
9191

9292

9393
let forEachU m f = Dict.forEachU (S.data m) f
9494
let forEach m f = forEachU m (fun [@bs] a b -> f a b)
95-
let reduceU m acc f = Dict.reduceU (S.data m) acc f
95+
let reduceU m acc f = Dict.reduceU (S.data m) acc f
9696
let reduce m acc f = reduceU m acc (fun[@bs] a b c -> f a b c )
97-
let everyU m f = Dict.everyU (S.data m) f
97+
let everyU m f = Dict.everyU (S.data m) f
9898
let every m f = everyU m (fun [@bs] a b -> f a b)
9999
let someU m f = Dict.someU (S.data m) f
100100
let some m f = someU m (fun[@bs] a b -> f a b)
101101
let keepU m f =
102102
S.t ~cmp:(S.cmp m) ~data:(Dict.keepU (S.data m) f)
103103
let keep m f = keepU m (fun [@bs] a b -> f a b)
104-
105-
let partitionU m p =
106-
let cmp = S.cmp m in
107-
let l,r = Dict.partitionU (S.data m) p in
108-
S.t ~cmp ~data:l, S.t ~cmp ~data:r
104+
105+
let partitionU m p =
106+
let cmp = S.cmp m in
107+
let l,r = m |. S.data |. Dict.partitionU p in
108+
S.t ~cmp ~data:l, S.t ~cmp ~data:r
109109
let partition m p = partitionU m (fun [@bs] a b -> p a b)
110110

111-
let mapU m f =
111+
let mapU m f =
112112
S.t ~cmp:(S.cmp m) ~data:(Dict.mapU (S.data m) f)
113-
let map m f = mapU m (fun [@bs] a -> f a)
114-
let mapWithKeyU m f =
113+
let map m f = mapU m (fun [@bs] a -> f a)
114+
let mapWithKeyU m f =
115115
S.t ~cmp:(S.cmp m) ~data:(Dict.mapWithKeyU (S.data m) f)
116116
let mapWithKey m f = mapWithKeyU m (fun [@bs] a b -> f a b)
117-
let size map = Dict.size (S.data map)
118-
let toList map = Dict.toList (S.data map)
117+
let size map = Dict.size (S.data map)
118+
let toList map = Dict.toList (S.data map)
119119
let toArray m = Dict.toArray (S.data m)
120120
let keysToArray m = Dict.keysToArray (S.data m)
121121
let valuesToArray m = Dict.valuesToArray (S.data m)
122122
let minKey m = Dict.minKey (S.data m)
123123
let minKeyUndefined m = Dict.minKeyUndefined (S.data m)
124124
let maxKey m = Dict.maxKey (S.data m)
125-
let maxKeyUndefined m = Dict.maxKeyUndefined (S.data m)
125+
let maxKeyUndefined m = Dict.maxKeyUndefined (S.data m)
126126
let minimum m = Dict.minimum (S.data m)
127-
let minUndefined m = Dict.minUndefined (S.data m)
127+
let minUndefined m = Dict.minUndefined (S.data m)
128128
let maximum m = Dict.maximum (S.data m)
129129
let maxUndefined m = Dict.maxUndefined (S.data m)
130130

131131
let get map x =
132-
Dict.get ~cmp:(S.cmp map) (S.data map) x
132+
Dict.get ~cmp:(S.cmp map) (S.data map) x
133133

134-
let getUndefined map x =
134+
let getUndefined map x =
135135
Dict.getUndefined ~cmp:(S.cmp map) (S.data map) x
136136

137-
let getWithDefault map x def =
137+
let getWithDefault map x def =
138138
Dict.getWithDefault ~cmp:(S.cmp map) (S.data map) x def
139139

140-
let getExn map x =
141-
Dict.getExn ~cmp:(S.cmp map) (S.data map) x
140+
let getExn map x =
141+
Dict.getExn ~cmp:(S.cmp map) (S.data map) x
142142

143-
let has map x =
143+
let has map x =
144144
Dict.has ~cmp:(S.cmp map) (S.data map) x
145145

146146
let checkInvariantInternal m =
147147
Dict.checkInvariantInternal (S.data m)
148148

149-
let eqU m1 m2 veq =
149+
let eqU m1 m2 veq =
150150
Dict.eqU ~kcmp:(S.cmp m1) ~veq (S.data m1) (S.data m2)
151151
let eq m1 m2 veq = eqU m1 m2 (fun[@bs] a b -> veq a b)
152152

153153
let cmpU m1 m2 vcmp =
154154
Dict.cmpU ~kcmp:(S.cmp m1) ~vcmp (S.data m1) (S.data m2)
155155
let cmp m1 m2 vcmp = cmpU m1 m2 (fun [@bs] a b -> vcmp a b)
156-
156+
157157
let getData = S.data
158-
158+
159159
let getId (type key) (type identity) (m : (key,_,identity) t) : (key, identity) id =
160160
let module T = struct
161161
type nonrec identity = identity
162162
type nonrec t = key
163163
let cmp = S.cmp m
164164
end in
165165
(module T )
166-
166+
167167
let packIdData (type key) (type idx) ~(id : (key, idx) id) ~data =
168-
let module M = (val id) in
168+
let module M = (val id) in
169169
S.t ~cmp:M.cmp ~data
170170

0 commit comments

Comments
 (0)