@@ -56,7 +56,7 @@ type t = {
56
56
cmj_case : cmj_case ;
57
57
}
58
58
59
- let mk ~(values :cmj_value Map_string.t ) ~effect ~npm_package_path ~cmj_case : t =
59
+ let make ~(values :cmj_value Map_string.t ) ~effect ~npm_package_path ~cmj_case : t =
60
60
{
61
61
values = Map_string. to_sorted_array_with_f values (fun k v -> {
62
62
name = k ;
@@ -130,13 +130,14 @@ let to_file name ~check_exists (v : t) =
130
130
let keyComp (a : string ) b =
131
131
Map_string. compare_key a b.name
132
132
133
- let not_found = single_na, None
133
+ let not_found key = {name = key; arity = single_na; persistent_closed_lambda = None }
134
134
135
- let get_result midVal =
136
- midVal.arity,
137
- if Js_config. get_cross_module_inline () then midVal.persistent_closed_lambda
138
- else None
139
135
136
+ let get_result midVal =
137
+ if midVal.persistent_closed_lambda = None ||
138
+ Js_config. get_cross_module_inline () then midVal
139
+ else {midVal with persistent_closed_lambda = None }
140
+
140
141
let rec binarySearchAux arr lo hi (key : string ) =
141
142
let mid = (lo + hi)/ 2 in
142
143
let midVal = Array. unsafe_get arr mid in
@@ -147,33 +148,33 @@ let rec binarySearchAux arr lo hi (key : string) =
147
148
if hi = mid then
148
149
let loVal = (Array. unsafe_get arr lo) in
149
150
if loVal.name = key then get_result loVal
150
- else not_found
151
+ else not_found key
151
152
else binarySearchAux arr lo mid key
152
153
else (* a[lo] =< a[mid] < key <= a[hi] *)
153
154
if lo = mid then
154
155
let hiVal = (Array. unsafe_get arr hi) in
155
156
if hiVal.name = key then get_result hiVal
156
- else not_found
157
+ else not_found key
157
158
else binarySearchAux arr mid hi key
158
159
159
- let binarySearch (sorted : keyed_cmj_values ) (key : string ) =
160
+ let binarySearch (sorted : keyed_cmj_values ) (key : string ) : keyed_cmj_value =
160
161
let len = Array. length sorted in
161
- if len = 0 then not_found
162
+ if len = 0 then not_found key
162
163
else
163
164
let lo = Array. unsafe_get sorted 0 in
164
165
let c = keyComp key lo in
165
- if c < 0 then not_found
166
+ if c < 0 then not_found key
166
167
else
167
168
let hi = Array. unsafe_get sorted (len - 1 ) in
168
169
let c2 = keyComp key hi in
169
- if c2 > 0 then not_found
170
+ if c2 > 0 then not_found key
170
171
else binarySearchAux sorted 0 (len - 1 ) key
171
172
172
173
173
174
(* FIXME: better error message when ocamldep
174
175
get self-cycle
175
176
*)
176
- let query_by_name (cmj_table : t ) name =
177
+ let query_by_name (cmj_table : t ) name : keyed_cmj_value =
177
178
let values = cmj_table.values in
178
179
binarySearch values name
179
180
0 commit comments