Skip to content

Commit e734c24

Browse files
authored
Runtime: Modernize stdlib (#1764)
* Runtime: merge/remove stdlib_modern * Runtime: modernize stdlib.js * Doc
1 parent bff8d13 commit e734c24

File tree

7 files changed

+16
-246
lines changed

7 files changed

+16
-246
lines changed

EMCASCRIPT.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ Features are grouped by ECMAScript version.
66
## ECMAScript 2015 - ES6
77
### rest parameters
88
- added in Nodejs 6
9+
### spread in function call
10+
- added in Nodejs 5
911
### Object.assign
1012
- added In Nodejs 4
1113
### ArrowFunction

compiler/lib-runtime-files/tests/all.ml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ let%expect_test _ =
4545
+prng.js
4646
+runtime_events.js
4747
+stdlib.js
48-
+stdlib_modern.js
4948
+str.js
5049
+sync.js
5150
+sys.js
@@ -98,5 +97,4 @@ let%expect_test _ =
9897
printl extra;
9998
[%expect {|
10099
+dynlink.js
101-
+stdlib_modern.js
102100
+toplevel.js |}]

compiler/tests-compiler/gh1051.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
let prog = {|let () = Printf.printf "%nx" 0xffffffffn;;|}
2323

2424
let%expect_test _ =
25-
Util.compile_and_run ~skip_modern:true prog;
25+
Util.compile_and_run prog;
2626
[%expect
2727
{|
2828
Warning: integer overflow: native integer 0xffffffff (4294967295) truncated to 0xffffffff (-1); the generated code might be incorrect.

compiler/tests-compiler/util/util.ml

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -566,23 +566,15 @@ let compile_and_run_bytecode ?unix s =
566566
|> run_bytecode
567567
|> print_endline)
568568

569-
let compile_and_run
570-
?debug
571-
?pretty
572-
?(skip_modern = false)
573-
?(flags = [])
574-
?effects
575-
?use_js_string
576-
?unix
577-
s =
569+
let compile_and_run ?debug ?pretty ?(flags = []) ?effects ?use_js_string ?unix s =
578570
with_temp_dir ~f:(fun () ->
579571
let bytecode_file =
580572
s
581573
|> Filetype.ocaml_text_of_string
582574
|> Filetype.write_ocaml ~name:"test.ml"
583575
|> compile_ocaml_to_bc ?debug ?unix
584576
in
585-
let output_without_stdlib_modern =
577+
let output =
586578
compile_bc_to_javascript
587579
?pretty
588580
~flags
@@ -592,24 +584,7 @@ let compile_and_run
592584
bytecode_file
593585
|> run_javascript
594586
in
595-
print_endline output_without_stdlib_modern;
596-
if not skip_modern
597-
then
598-
let output_with_stdlib_modern =
599-
compile_bc_to_javascript
600-
~flags:(flags @ [ "+stdlib_modern.js" ])
601-
?effects
602-
?use_js_string
603-
?sourcemap:debug
604-
bytecode_file
605-
|> run_javascript
606-
in
607-
if not (String.equal output_without_stdlib_modern output_with_stdlib_modern)
608-
then (
609-
print_endline "Output was different with stdlib_modern.js:";
610-
print_endline "===========================================";
611-
print_string output_with_stdlib_modern;
612-
print_endline "==========================================="))
587+
print_endline output)
613588

614589
let compile_and_parse_whole_program
615590
?(debug = true)

compiler/tests-compiler/util/util.mli

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ val print_double_fun_decl : Javascript.program -> string -> unit
8181
val compile_and_run :
8282
?debug:bool
8383
-> ?pretty:bool
84-
-> ?skip_modern:bool
8584
-> ?flags:string list
8685
-> ?effects:[ `Disabled | `Cps | `Double_translation ]
8786
-> ?use_js_string:bool

runtime/js/stdlib.js

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ function caml_call_gen(f, args) {
2424
var n = f.l >= 0 ? f.l : (f.l = f.length);
2525
var argsLen = args.length;
2626
var d = n - argsLen;
27-
if (d === 0) return f.apply(null, args);
27+
if (d === 0) return f(...args);
2828
else if (d < 0) {
29-
var g = f.apply(null, args.slice(0, n));
29+
var g = f(...args.slice(0, n));
3030
if (typeof g !== "function") return g;
3131
return caml_call_gen(g, args.slice(n));
3232
} else {
@@ -36,7 +36,7 @@ function caml_call_gen(f, args) {
3636
var nargs = new Array(argsLen + 1);
3737
for (var i = 0; i < argsLen; i++) nargs[i] = args[i];
3838
nargs[argsLen] = x;
39-
return f.apply(null, nargs);
39+
return f(...nargs);
4040
};
4141
break;
4242
}
@@ -46,7 +46,7 @@ function caml_call_gen(f, args) {
4646
for (var i = 0; i < argsLen; i++) nargs[i] = args[i];
4747
nargs[argsLen] = x;
4848
nargs[argsLen + 1] = y;
49-
return f.apply(null, nargs);
49+
return f(...nargs);
5050
};
5151
break;
5252
}
@@ -70,8 +70,9 @@ function caml_call_gen(f, args) {
7070
var n = f.l >= 0 ? f.l : (f.l = f.length);
7171
var argsLen = args.length;
7272
var d = n - argsLen;
73-
if (d === 0) return f.apply(null, args);
74-
else if (d < 0) {
73+
if (d === 0) {
74+
return f(...args);
75+
} else if (d < 0) {
7576
var rest = args.slice(n - 1);
7677
var k = args[argsLen - 1];
7778
args = args.slice(0, n);
@@ -81,7 +82,7 @@ function caml_call_gen(f, args) {
8182
args[args.length - 1] = k;
8283
return caml_call_gen(g, args);
8384
};
84-
return f.apply(null, args);
85+
return f(...args);
8586
} else {
8687
argsLen--;
8788
var k = args[argsLen];
@@ -92,7 +93,7 @@ function caml_call_gen(f, args) {
9293
for (var i = 0; i < argsLen; i++) nargs[i] = args[i];
9394
nargs[argsLen] = x;
9495
nargs[argsLen + 1] = y;
95-
return f.apply(null, nargs);
96+
return f(...nargs);
9697
};
9798
break;
9899
}
@@ -103,7 +104,7 @@ function caml_call_gen(f, args) {
103104
nargs[argsLen] = x;
104105
nargs[argsLen + 1] = y;
105106
nargs[argsLen + 2] = z;
106-
return f.apply(null, nargs);
107+
return f(...nargs);
107108
};
108109
break;
109110
}

runtime/js/stdlib_modern.js

Lines changed: 0 additions & 205 deletions
This file was deleted.

0 commit comments

Comments
 (0)