From: Alex Lam S.L Date: Sat, 20 Mar 2021 22:33:45 +0000 (+0000) Subject: document various v8 bugs (#4808) X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=8ea1ced389776400cf507cebc48c89f1865c27aa;p=UglifyJS.git document various v8 bugs (#4808) closes #4805 --- diff --git a/README.md b/README.md index b378a401..914eb562 100644 --- a/README.md +++ b/README.md @@ -1296,3 +1296,16 @@ To allow for better optimizations, the compiler makes various assumptions: // SyntaxError: Identifier 'e' has already been declared ``` UglifyJS may modify the input which in turn may suppress those errors. +- Some versions of Chrome and Node.js will give incorrect results with the + following: + ```javascript + console.log({ + ...{ + set 42(v) {}, + 42: "PASS", + }, + }); + // Expected: { '42': 'PASS' } + // Actual: { '42': undefined } + ``` + UglifyJS may modify the input which in turn may suppress those errors. diff --git a/test/compress/classes.js b/test/compress/classes.js index 46749a27..7a9dfc51 100644 --- a/test/compress/classes.js +++ b/test/compress/classes.js @@ -725,7 +725,7 @@ unused_await: { (() => console.log(await))(); })(); } - expect_stdout: "PASS" + expect_stdout: true node_version: ">=12" } diff --git a/test/compress/loops.js b/test/compress/loops.js index b1128f1a..5a66e02c 100644 --- a/test/compress/loops.js +++ b/test/compress/loops.js @@ -836,10 +836,7 @@ for_of: { console.log(async); } expect_exact: 'var async=["PASS",42];async.p="FAIL";for(async of(null,async))console.log(async);' - expect_stdout: [ - "PASS", - "42", - ] + expect_stdout: true node_version: ">=0.12" } diff --git a/test/ufuzz/index.js b/test/ufuzz/index.js index f7ad29ad..d91fe040 100644 --- a/test/ufuzz/index.js +++ b/test/ufuzz/index.js @@ -158,6 +158,9 @@ var SUPPORT = function(matrix) { template: "``", trailing_comma: "function f(a,) {}", }); +if (SUPPORT.exponentiation && sandbox.run_code("console.log(10 ** 100 === Math.pow(10, 100));") !== "true\n") { + SUPPORT.exponentiation = false; +} var VALUES = [ '"a"', @@ -241,40 +244,13 @@ BINARY_OPS = BINARY_OPS.concat(BINARY_OPS); BINARY_OPS = BINARY_OPS.concat(BINARY_OPS); BINARY_OPS.push(" in "); -var ASSIGNMENTS = [ - "=", - "=", - "=", - "=", - "=", - "=", - "=", - "=", - "=", - "=", - - "=", - "=", - "=", - "=", - "=", - "=", - "=", - "=", - "=", - "=", - - "+=", - "+=", - "+=", - "+=", - "+=", - "+=", - "+=", - "+=", - "+=", - "+=", - +var ASSIGNMENTS = [ "=" ]; +ASSIGNMENTS = ASSIGNMENTS.concat(ASSIGNMENTS); +ASSIGNMENTS.push("+="); +ASSIGNMENTS = ASSIGNMENTS.concat(ASSIGNMENTS); +ASSIGNMENTS = ASSIGNMENTS.concat(ASSIGNMENTS); +ASSIGNMENTS = ASSIGNMENTS.concat(ASSIGNMENTS); +ASSIGNMENTS = ASSIGNMENTS.concat([ "-=", "*=", "/=", @@ -285,8 +261,11 @@ var ASSIGNMENTS = [ "<<=", ">>=", ">>>=", -]; -if (SUPPORT.exponentiation) ASSIGNMENTS.push("**="); +]); +if (SUPPORT.exponentiation) { + ASSIGNMENTS = ASSIGNMENTS.concat(ASSIGNMENTS); + ASSIGNMENTS.push("**="); +} var UNARY_SAFE = [ "+",