You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2019/12/18 17:59:36 UTC
[couchdb-escodegen] reference refs/pull/297/head created (now
37badf3)
This is an automated email from the ASF dual-hosted git repository.
davisp pushed a change to reference refs/pull/297/head
in repository https://gitbox.apache.org/repos/asf/couchdb-escodegen.git.
at 37badf3 Support for defaults when destructuring parameters
This reference includes the following new commits:
new 37badf3 Support for defaults when destructuring parameters
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[couchdb-escodegen] 01/01: Support for defaults when destructuring
parameters
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
davisp pushed a commit to reference refs/pull/297/head
in repository https://gitbox.apache.org/repos/asf/couchdb-escodegen.git
commit 37badf382f744fc8de7ba0eeff2fac9480b0813c
Author: Tyler Waters <ty...@gmail.com>
AuthorDate: Sat Jun 4 12:30:11 2016 -0700
Support for defaults when destructuring parameters
Fixes #296
---
escodegen.js | 22 ++++++++-----
test/harmony.js | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 111 insertions(+), 8 deletions(-)
diff --git a/escodegen.js b/escodegen.js
index 0360521..e92b283 100644
--- a/escodegen.js
+++ b/escodegen.js
@@ -980,14 +980,20 @@
return result;
};
- CodeGenerator.prototype.generatePropertyKey = function (expr, computed) {
+ CodeGenerator.prototype.generatePropertyKey = function (expr, computed, value) {
var result = [];
if (computed) {
result.push('[');
}
- result.push(this.generateExpression(expr, Precedence.Sequence, E_TTT));
+ if (value.type === 'AssignmentPattern') {
+ result.push(this.AssignmentPattern(value, Precedence.Sequence, E_TTT));
+ }
+ else {
+ result.push(this.generateExpression(expr, Precedence.Sequence, E_TTT));
+ }
+
if (computed) {
result.push(']');
}
@@ -2113,13 +2119,13 @@
}
if (expr.kind === 'get' || expr.kind === 'set') {
fragment = [
- join(expr.kind, this.generatePropertyKey(expr.key, expr.computed)),
+ join(expr.kind, this.generatePropertyKey(expr.key, expr.computed, expr.value)),
this.generateFunctionBody(expr.value)
];
} else {
fragment = [
generateMethodPrefix(expr),
- this.generatePropertyKey(expr.key, expr.computed),
+ this.generatePropertyKey(expr.key, expr.computed, expr.value),
this.generateFunctionBody(expr.value)
];
}
@@ -2130,25 +2136,25 @@
if (expr.kind === 'get' || expr.kind === 'set') {
return [
expr.kind, noEmptySpace(),
- this.generatePropertyKey(expr.key, expr.computed),
+ this.generatePropertyKey(expr.key, expr.computed, expr.value),
this.generateFunctionBody(expr.value)
];
}
if (expr.shorthand) {
- return this.generatePropertyKey(expr.key, expr.computed);
+ return this.generatePropertyKey(expr.key, expr.computed, expr.value);
}
if (expr.method) {
return [
generateMethodPrefix(expr),
- this.generatePropertyKey(expr.key, expr.computed),
+ this.generatePropertyKey(expr.key, expr.computed, expr.value),
this.generateFunctionBody(expr.value)
];
}
return [
- this.generatePropertyKey(expr.key, expr.computed),
+ this.generatePropertyKey(expr.key, expr.computed, expr.value),
':' + space,
this.generateExpression(expr.value, Precedence.Assignment, E_TTT)
];
diff --git a/test/harmony.js b/test/harmony.js
index 2087e4f..9941f18 100644
--- a/test/harmony.js
+++ b/test/harmony.js
@@ -510,6 +510,103 @@ data = {
},
'Object destructuring (and aliasing)': {
+ '({a = "b", b = {\n c: "d",\n e: "f"\n }} = {}) => {\n};': {
+ generateFrom: {
+ type: "ExpressionStatement",
+ expression: {
+ type: "ArrowFunctionExpression",
+ id: null,
+ params: [{
+ type: "ObjectPattern",
+ properties: [{
+ type: "Property",
+ key: {
+ type: "Identifier",
+ name: "a"
+ },
+ computed: false,
+ value: {
+ type: "AssignmentPattern",
+ left: {
+ type: "Identifier",
+ name: "a"
+ },
+ right: {
+ type: "Literal",
+ value: "b",
+ raw: "\"b\""
+ }
+ },
+ kind: "init",
+ method: false,
+ shorthand: true
+ }, {
+ type: "Property",
+ key: {
+ type: "Identifier",
+ name: "b"
+ },
+ computed: false,
+ value: {
+ type: "AssignmentPattern",
+ left: {
+ type: "Identifier",
+ name: "b"
+ },
+ right: {
+ type: "ObjectExpression",
+ properties: [{
+ type: "Property",
+ key: {
+ type: "Identifier",
+ name: "c"
+ },
+ computed: false,
+ value: {
+ type: "Literal",
+ value: "d",
+ raw: "\"d\""
+ },
+ kind: "init",
+ method: false,
+ shorthand: false
+ }, {
+ type: "Property",
+ key: {
+ type: "Identifier",
+ name: "e"
+ },
+ computed: false,
+ value: {
+ type: "Literal",
+ value: "f",
+ raw: "\"f\""
+ },
+ kind: "init",
+ method: false,
+ shorthand: false
+ }]
+ }
+ },
+ kind: "init",
+ method: false,
+ shorthand: true
+ }]
+ }],
+ defaults: [{
+ type: "ObjectExpression",
+ properties: []
+ }],
+ body: {
+ type: "BlockStatement",
+ body: []
+ },
+ generator: false,
+ expression: false
+ }
+ }
+ },
+
'var {\n a,\n b: C\n} = {};' : {
generateFrom: {
type: 'Program',