support `**=` (#4778)
authorAlex Lam S.L <alexlamsl@gmail.com>
Mon, 15 Mar 2021 13:53:48 +0000 (13:53 +0000)
committerGitHub <noreply@github.com>
Mon, 15 Mar 2021 13:53:48 +0000 (21:53 +0800)
lib/parse.js
test/compress/exponentiation.js
test/ufuzz/index.js

index 7bea41d..06f3f84 100644 (file)
@@ -100,6 +100,7 @@ var OPERATORS = makePredicate([
     "/=",
     "*=",
     "%=",
+    "**=",
     ">>=",
     "<<=",
     ">>>=",
@@ -652,7 +653,7 @@ var UNARY_PREFIX = makePredicate("typeof void delete -- ++ ! ~ - +");
 
 var UNARY_POSTFIX = makePredicate("-- ++");
 
-var ASSIGNMENT = makePredicate("= += -= /= *= %= >>= <<= >>>= |= ^= &=");
+var ASSIGNMENT = makePredicate("= += -= /= *= %= **= >>= <<= >>>= |= ^= &=");
 
 var PRECEDENCE = function(a, ret) {
     for (var i = 0; i < a.length;) {
index 5de3c96..1a678f5 100644 (file)
@@ -43,6 +43,28 @@ await: {
     node_version: ">=8"
 }
 
+assignment_1: {
+    input: {
+        var a = 2;
+        a **= 5;
+        console.log(a);
+    }
+    expect_exact: "var a=2;a**=5;console.log(a);"
+    expect_stdout: "32"
+    node_version: ">=8"
+}
+
+assignment_2: {
+    input: {
+        var a = 8n;
+        a **= a;
+        console.log(a);
+    }
+    expect_exact: "var a=8n;a**=a;console.log(a);"
+    expect_stdout: "16777216n"
+    node_version: ">=10"
+}
+
 evaluate: {
     options = {
         evaluate: true,
index c38e33c..c90eb55 100644 (file)
@@ -277,14 +277,15 @@ var ASSIGNMENTS = [
     "-=",
     "*=",
     "/=",
+    "%=",
     "&=",
     "|=",
     "^=",
     "<<=",
     ">>=",
     ">>>=",
-    "%=",
 ];
+if (SUPPORT.exponentiation) ASSIGNMENTS.push("**=");
 
 var UNARY_SAFE = [
     "+",