From bb0689fe101a2c7c4ba3d93c4cf287605a76d5d0 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 22 Jun 2020 22:54:30 +0300 Subject: [PATCH 1/5] Fixed precedence of sequence expression as method definition key --- escodegen.js | 8 +++++++- test/compare-acorn-es6/class-declaration.expected.js | 8 ++++++++ test/compare-acorn-es6/class-declaration.expected.min.js | 1 + test/compare-acorn-es6/class-declaration.js | 6 ++++++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 test/compare-acorn-es6/class-declaration.expected.js create mode 100644 test/compare-acorn-es6/class-declaration.expected.min.js create mode 100644 test/compare-acorn-es6/class-declaration.js diff --git a/escodegen.js b/escodegen.js index 6fe6646d..1ffe62cf 100644 --- a/escodegen.js +++ b/escodegen.js @@ -983,7 +983,13 @@ result.push('['); } - result.push(this.generateExpression(expr, Precedence.Sequence, E_TTT)); + result.push(this.generateExpression( + expr, + expr.type === Syntax.SequenceExpression + ? Precedence.Primary + : Precedence.Sequence, + E_TTT + )); if (computed) { result.push(']'); diff --git a/test/compare-acorn-es6/class-declaration.expected.js b/test/compare-acorn-es6/class-declaration.expected.js new file mode 100644 index 00000000..3d141952 --- /dev/null +++ b/test/compare-acorn-es6/class-declaration.expected.js @@ -0,0 +1,8 @@ +class ComputedKey { + [n1 + n2]() { + } +} +class SequenceExpressionAsKey { + [(n1, n2)]() { + } +} diff --git a/test/compare-acorn-es6/class-declaration.expected.min.js b/test/compare-acorn-es6/class-declaration.expected.min.js new file mode 100644 index 00000000..e56b9da0 --- /dev/null +++ b/test/compare-acorn-es6/class-declaration.expected.min.js @@ -0,0 +1 @@ +class ComputedKey{[n1+n2](){}}class SequenceExpressionAsKey{[(n1,n2)](){}} diff --git a/test/compare-acorn-es6/class-declaration.js b/test/compare-acorn-es6/class-declaration.js new file mode 100644 index 00000000..7f140c80 --- /dev/null +++ b/test/compare-acorn-es6/class-declaration.js @@ -0,0 +1,6 @@ +class ComputedKey { + [n1 + n2]() {} +} +class SequenceExpressionAsKey { + [(n1, n2)]() {} +} \ No newline at end of file From c89ea2f0a524fff89f390241ac2433d5eea0a0d4 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 22 Jun 2020 23:00:00 +0300 Subject: [PATCH 2/5] Added test to check computed key parenthesis --- test/compare-acorn-es6/class-declaration.expected.js | 4 ++++ test/compare-acorn-es6/class-declaration.expected.min.js | 2 +- test/compare-acorn-es6/class-declaration.js | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/test/compare-acorn-es6/class-declaration.expected.js b/test/compare-acorn-es6/class-declaration.expected.js index 3d141952..512f8a72 100644 --- a/test/compare-acorn-es6/class-declaration.expected.js +++ b/test/compare-acorn-es6/class-declaration.expected.js @@ -2,6 +2,10 @@ class ComputedKey { [n1 + n2]() { } } +class ComputedKeyWithParenthesis { + [(n1 + n2) * n3]() { + } +} class SequenceExpressionAsKey { [(n1, n2)]() { } diff --git a/test/compare-acorn-es6/class-declaration.expected.min.js b/test/compare-acorn-es6/class-declaration.expected.min.js index e56b9da0..ccc2bfe7 100644 --- a/test/compare-acorn-es6/class-declaration.expected.min.js +++ b/test/compare-acorn-es6/class-declaration.expected.min.js @@ -1 +1 @@ -class ComputedKey{[n1+n2](){}}class SequenceExpressionAsKey{[(n1,n2)](){}} +class ComputedKey{[n1+n2](){}}class ComputedKeyWithParenthesis{[(n1+n2)*n3](){}}class SequenceExpressionAsKey{[(n1,n2)](){}} diff --git a/test/compare-acorn-es6/class-declaration.js b/test/compare-acorn-es6/class-declaration.js index 7f140c80..96cca6fb 100644 --- a/test/compare-acorn-es6/class-declaration.js +++ b/test/compare-acorn-es6/class-declaration.js @@ -1,6 +1,9 @@ class ComputedKey { [n1 + n2]() {} } +class ComputedKeyWithParenthesis { + [(n1 + n2) * n3]() {} +} class SequenceExpressionAsKey { [(n1, n2)]() {} } \ No newline at end of file From 13e3eb826b50ebcb5dd10efd9515f22bf9f73c3a Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 22 Jun 2020 23:23:41 +0300 Subject: [PATCH 3/5] Changed precedence of method definition key on Assignment --- escodegen.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/escodegen.js b/escodegen.js index 1ffe62cf..a23b7c06 100644 --- a/escodegen.js +++ b/escodegen.js @@ -983,13 +983,7 @@ result.push('['); } - result.push(this.generateExpression( - expr, - expr.type === Syntax.SequenceExpression - ? Precedence.Primary - : Precedence.Sequence, - E_TTT - )); + result.push(this.generateExpression(expr, Precedence.Assignment, E_TTT)); if (computed) { result.push(']'); From 189e8c59839f4630ab12dea747e4b5032db92571 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Mon, 22 Jun 2020 23:39:34 +0300 Subject: [PATCH 4/5] Updated test to check computed key parenthesis --- test/compare-acorn-es6/class-declaration.expected.js | 2 +- test/compare-acorn-es6/class-declaration.expected.min.js | 2 +- test/compare-acorn-es6/class-declaration.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/compare-acorn-es6/class-declaration.expected.js b/test/compare-acorn-es6/class-declaration.expected.js index 512f8a72..ae37d688 100644 --- a/test/compare-acorn-es6/class-declaration.expected.js +++ b/test/compare-acorn-es6/class-declaration.expected.js @@ -3,7 +3,7 @@ class ComputedKey { } } class ComputedKeyWithParenthesis { - [(n1 + n2) * n3]() { + [n1 = (n2 + n3) * n4]() { } } class SequenceExpressionAsKey { diff --git a/test/compare-acorn-es6/class-declaration.expected.min.js b/test/compare-acorn-es6/class-declaration.expected.min.js index ccc2bfe7..b364b47a 100644 --- a/test/compare-acorn-es6/class-declaration.expected.min.js +++ b/test/compare-acorn-es6/class-declaration.expected.min.js @@ -1 +1 @@ -class ComputedKey{[n1+n2](){}}class ComputedKeyWithParenthesis{[(n1+n2)*n3](){}}class SequenceExpressionAsKey{[(n1,n2)](){}} +class ComputedKey{[n1+n2](){}}class ComputedKeyWithParenthesis{[n1=(n2+n3)*n4](){}}class SequenceExpressionAsKey{[(n1,n2)](){}} diff --git a/test/compare-acorn-es6/class-declaration.js b/test/compare-acorn-es6/class-declaration.js index 96cca6fb..afd0a210 100644 --- a/test/compare-acorn-es6/class-declaration.js +++ b/test/compare-acorn-es6/class-declaration.js @@ -2,7 +2,7 @@ class ComputedKey { [n1 + n2]() {} } class ComputedKeyWithParenthesis { - [(n1 + n2) * n3]() {} + [n1 = (n2 + n3) * n4]() {} } class SequenceExpressionAsKey { [(n1, n2)]() {} From 25eb2b8f14ad4bf7c06030751f5b8f1d13dce0eb Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Tue, 23 Jun 2020 00:57:04 +0300 Subject: [PATCH 5/5] Replaced ComputedKeyWithParenthesis test on AssignmentExpressionAsKey test --- test/compare-acorn-es6/class-declaration.expected.js | 4 ++-- test/compare-acorn-es6/class-declaration.expected.min.js | 2 +- test/compare-acorn-es6/class-declaration.js | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/compare-acorn-es6/class-declaration.expected.js b/test/compare-acorn-es6/class-declaration.expected.js index ae37d688..abc86a65 100644 --- a/test/compare-acorn-es6/class-declaration.expected.js +++ b/test/compare-acorn-es6/class-declaration.expected.js @@ -2,8 +2,8 @@ class ComputedKey { [n1 + n2]() { } } -class ComputedKeyWithParenthesis { - [n1 = (n2 + n3) * n4]() { +class AssignmentExpressionAsKey { + [n1 = n2]() { } } class SequenceExpressionAsKey { diff --git a/test/compare-acorn-es6/class-declaration.expected.min.js b/test/compare-acorn-es6/class-declaration.expected.min.js index b364b47a..496f2f81 100644 --- a/test/compare-acorn-es6/class-declaration.expected.min.js +++ b/test/compare-acorn-es6/class-declaration.expected.min.js @@ -1 +1 @@ -class ComputedKey{[n1+n2](){}}class ComputedKeyWithParenthesis{[n1=(n2+n3)*n4](){}}class SequenceExpressionAsKey{[(n1,n2)](){}} +class ComputedKey{[n1+n2](){}}class AssignmentExpressionAsKey{[n1=n2](){}}class SequenceExpressionAsKey{[(n1,n2)](){}} diff --git a/test/compare-acorn-es6/class-declaration.js b/test/compare-acorn-es6/class-declaration.js index afd0a210..db15285f 100644 --- a/test/compare-acorn-es6/class-declaration.js +++ b/test/compare-acorn-es6/class-declaration.js @@ -1,8 +1,8 @@ class ComputedKey { [n1 + n2]() {} } -class ComputedKeyWithParenthesis { - [n1 = (n2 + n3) * n4]() {} +class AssignmentExpressionAsKey { + [n1 = n2]() {} } class SequenceExpressionAsKey { [(n1, n2)]() {}