From 90a9884b3dfb9be804bdd7e34cf0a8859a574156 Mon Sep 17 00:00:00 2001 From: shenlibo Date: Thu, 31 Dec 2020 15:54:21 +0800 Subject: [PATCH 1/3] Add support Class field declarations --- escodegen.js | 20 +++++++++++++++++++ .../class-field-declarations.js | 9 +++++++++ 2 files changed, 29 insertions(+) create mode 100644 test/compare-acorn-es2019/class-field-declarations.js diff --git a/escodegen.js b/escodegen.js index 82417cd7..351d5350 100644 --- a/escodegen.js +++ b/escodegen.js @@ -2161,6 +2161,26 @@ return join(result, fragment); }, + FieldDefinition: function(expr, precedence, flags) { + let result; + if (expr.static) { + result = [`static${space}`]; + } + else { + result = []; + } + const fragment = [ + this.generatePropertyKey(expr.key, expr.computed), + `${space}=${space}`, + this.generateExpression(expr.value, Precedence.Assignment, E_TTT) + ]; + return join(result, fragment); + }, + + PrivateName: function(expr, precedence, flags) { + return toSourceNodeWhenNeeded(`#${expr.name}`, expr); + }, + Property: function (expr, precedence, flags) { if (expr.kind === 'get' || expr.kind === 'set') { return [ diff --git a/test/compare-acorn-es2019/class-field-declarations.js b/test/compare-acorn-es2019/class-field-declarations.js new file mode 100644 index 00000000..ae393ea0 --- /dev/null +++ b/test/compare-acorn-es2019/class-field-declarations.js @@ -0,0 +1,9 @@ +class FieldDeclarations{ + a = 1 + b = function () {} +} +class PrivateFields{ + #a = 1 + #b = function () {} +} + From 2e4b6bf8c22a618a7993668ea927ae90d63ee66a Mon Sep 17 00:00:00 2001 From: shenlibo Date: Wed, 6 Jan 2021 17:34:01 +0800 Subject: [PATCH 2/3] Add support Class field declarations --- escodegen.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/escodegen.js b/escodegen.js index 351d5350..6881de48 100644 --- a/escodegen.js +++ b/escodegen.js @@ -2162,14 +2162,14 @@ }, FieldDefinition: function(expr, precedence, flags) { - let result; + var result; if (expr.static) { result = [`static${space}`]; } else { result = []; } - const fragment = [ + var fragment = [ this.generatePropertyKey(expr.key, expr.computed), `${space}=${space}`, this.generateExpression(expr.value, Precedence.Assignment, E_TTT) From 3e49b49c4af71fafb62dc69e43723d0c0d2f7644 Mon Sep 17 00:00:00 2001 From: shenlibo Date: Wed, 6 Jan 2021 17:49:03 +0800 Subject: [PATCH 3/3] Add support Class field declarations --- escodegen.js | 8 ++++---- .../class-field-declarations.expected.js | 7 +++++++ .../class-field-declarations.expected.min.js | 1 + test/compare-acorn-es2019/class-field-declarations.js | 2 -- 4 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 test/compare-acorn-es2019/class-field-declarations.expected.js create mode 100644 test/compare-acorn-es2019/class-field-declarations.expected.min.js diff --git a/escodegen.js b/escodegen.js index 6881de48..e10d2d64 100644 --- a/escodegen.js +++ b/escodegen.js @@ -2163,22 +2163,22 @@ FieldDefinition: function(expr, precedence, flags) { var result; - if (expr.static) { - result = [`static${space}`]; + if (expr['static']) { + result = ['static' + space]; } else { result = []; } var fragment = [ this.generatePropertyKey(expr.key, expr.computed), - `${space}=${space}`, + space + '=' +space, this.generateExpression(expr.value, Precedence.Assignment, E_TTT) ]; return join(result, fragment); }, PrivateName: function(expr, precedence, flags) { - return toSourceNodeWhenNeeded(`#${expr.name}`, expr); + return toSourceNodeWhenNeeded('#' + expr.name, expr); }, Property: function (expr, precedence, flags) { diff --git a/test/compare-acorn-es2019/class-field-declarations.expected.js b/test/compare-acorn-es2019/class-field-declarations.expected.js new file mode 100644 index 00000000..7cfcdd45 --- /dev/null +++ b/test/compare-acorn-es2019/class-field-declarations.expected.js @@ -0,0 +1,7 @@ +class FieldDeclarations{ + a = 1 +} +class PrivateFields{ + #a = 1 +} + diff --git a/test/compare-acorn-es2019/class-field-declarations.expected.min.js b/test/compare-acorn-es2019/class-field-declarations.expected.min.js new file mode 100644 index 00000000..47742c23 --- /dev/null +++ b/test/compare-acorn-es2019/class-field-declarations.expected.min.js @@ -0,0 +1 @@ +class FieldDeclarations{a=1}class PrivateFields{#a=1} \ No newline at end of file diff --git a/test/compare-acorn-es2019/class-field-declarations.js b/test/compare-acorn-es2019/class-field-declarations.js index ae393ea0..7cfcdd45 100644 --- a/test/compare-acorn-es2019/class-field-declarations.js +++ b/test/compare-acorn-es2019/class-field-declarations.js @@ -1,9 +1,7 @@ class FieldDeclarations{ a = 1 - b = function () {} } class PrivateFields{ #a = 1 - #b = function () {} }