console_log: { input: { console.log("%% %s"); console.log("%% %s", "%s"); } expect: { console.log("%% %s"); console.log("%% %s", "%s"); } expect_stdout: [ "%% %s", "% %s", ] } console_log_console: { input: { var log = console.log; log(console); log(typeof console.log); } expect: { var log = console.log; log(console); log(typeof console.log); } expect_stdout: [ "{ log: 'function(){}' }", "function", ] } typeof_arguments: { options = { evaluate: true, reduce_vars: true, toplevel: true, unused: true, } input: { var arguments; console.log((typeof arguments).length); } expect: { var arguments; console.log((typeof arguments).length); } expect_stdout: "6" } typeof_arguments_assigned: { options = { evaluate: true, reduce_vars: true, toplevel: true, unused: true, } input: { var arguments = void 0; console.log((typeof arguments).length); } expect: { console.log("undefined".length); } expect_stdout: "9" } toplevel_Infinity_NaN_undefined: { options = { evaluate: true, reduce_vars: true, toplevel: true, unused: true, } input: { var Infinity = "foo"; var NaN = 42; var undefined = null; console.log(Infinity, NaN, undefined); } expect: { console.log("foo", 42, null); } expect_stdout: "foo 42 null" } log_global: { input: { console.log(function() { return this; }()); } expect: { console.log(function() { return this; }()); } expect_stdout: "[object global]" } log_nested: { options = { unused: true, } input: { var o = { p: 42 }; for (var i = 0; i < 10; i++) o = { p: o, q: function foo() {}, }; console.log(o); } expect: { var o = { p: 42 }; for (var i = 0; i < 10; i++) o = { p: o, q: function() {}, }; console.log(o); } expect_stdout: true } timers: { options = { reduce_vars: true, toplevel: true, unused: true, } input: { var count = 0, interval = 1000, duration = 3210; var timer = setInterval(function() { console.log(++count); }, interval); setTimeout(function() { clearInterval(timer); }, duration); } expect: { var count = 0; var timer = setInterval(function() { console.log(++count); }, 1000); setTimeout(function() { clearInterval(timer); }, 3210); } expect_stdout: [ "1", "2", "3", ] node_version: ">=0.12" } issue_4054: { input: { console.log({ set p(v) { throw "FAIL"; }, }); } expect: { console.log({ set p(v) { throw "FAIL"; }, }); } expect_stdout: "{ p: [Setter] }" } issue_4811_1: { input: { for (var PASS in this); console.log(PASS, this, {} < this); } expect: { for (var PASS in this); console.log(PASS, this, {} < this); } expect_stdout: "PASS [object global] true" } issue_4811_2: { options = { side_effects: true, } input: { (async function() {}); for (var PASS in this); console.log(PASS, this, {} < this); } expect: { for (var PASS in this); console.log(PASS, this, {} < this); } expect_stdout: "PASS [object global] true" node_version: ">=8" } le='2019-05-13 10:57:11 +0200'>2019-05-13nls: Update es translation.Ludovic Courtès 2019-05-13nls: Update de translation.Ludovic Courtès 2019-05-03nls: Update da translations.Ludovic Courtès 2019-05-01nls: Update translations for de and fr.Ludovic Courtès 2019-04-29guix package: Add 'guix search' alias....Ludovic Courtès 2019-04-29guix package: Add 'install', 'remove', and 'upgrade' aliases....Ludovic Courtès 2019-04-25nls: Update 'es' translation.Julien Lepiller 2019-04-25nls: Update 'de' translation.Julien Lepiller 2019-04-25nls: Update 'fr' translation.Julien Lepiller 2019-04-23nls: Add missing installer files....Ludovic Courtès 2019-04-17nls: Update 'de' translation.Ludovic Courtès 2019-04-15nls: Update 'fr' translation.Julien Lepiller 2019-04-13nls: Update 'fr' translation.Julien Lepiller 2019-03-16booloader: Add 'invoke/quiet'....Ludovic Courtès 2019-03-06nls: Add Swedish translation....Julien Lepiller