···373373374374let rec r_json k d = (* {value} *)
375375 let err k d = spos d; discard_to_white err_exp_json (r_white (r_json k)) d in
376376- r_value err k d
376376+ if d.c <> ux_eoi then r_value err k d else ret err_exp_json k d
377377378378let r_start d = (* start of input *)
379379 let bom k d = if Uutf.decoder_removed_bom d.u then ret err_bom k d else k d in
+11-5
vendor/opam/jsonm/test/test.ml
···98989999let test_seq decode src seq =
100100 let d = Jsonm.decoder (`String src) in
101101- let rec loop d = function [] -> ()
101101+ let rec loop d = function
102102+ | [] -> if decode d <> `End then fail "decoder not at the `End"; ()
102103 | v :: vs -> test_decode (decode d) v; loop d vs
103104 in
104105 loop d seq
···258259259260let decoder_json_text () =
260261 log "Decoder JSON text.\n";
262262+ test_seq Jsonm.decode "a" [ `Error (`Expected `Json);
263263+ `Error (`Expected `Json); `End ];
264264+ test_seq Jsonm.decode "" [ `Error (`Expected `Json); `End ];
261265 test_seq Jsonm.decode "a : null {}"
262266 [ `Error (`Expected `Json);
263267 `Error (`Expected `Json);
264268 `Lexeme `Null;
265265- `Error (`Expected `Eoi)];
269269+ `Error (`Expected `Eoi); `End];
266270 test_seq Jsonm.decode "a : null []"
267271 [ `Error (`Expected `Json);
268272 `Error (`Expected `Json);
269273 `Lexeme `Null;
270270- `Error (`Expected `Eoi)];
274274+ `Error (`Expected `Eoi); `End];
271275 ()
272276273277let decoder_bom () =
274278 log "Decoder BOM.\n";
275275- let seq = [`Error `Illegal_BOM; `Lexeme `Os; `Lexeme `Oe] in
279279+ let seq = [`Error `Illegal_BOM; `Lexeme `Os; `Lexeme `Oe; `End] in
276280 test_seq Jsonm.decode "\xEF\xBB\xBF {}" seq;
277281 test_seq Jsonm.decode "\xFE\xFF\x00\x7B\x00\x7D" seq;
278278- test_seq Jsonm.decode "\xFE\xFF\x00\x7B\x00\x7D\x00" seq
282282+ test_seq Jsonm.decode "\xFF\xFE\x7B\x00\x7D\x00" seq;
283283+ ()
284284+279285280286let decoder_eoi () =
281287 log "Decoder end of input.\n";