From b9fa06f90bfee906e998ec47da73139482e6b58e Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Tue, 15 Nov 2016 09:10:55 -0800 Subject: [PATCH] Address PR commennts Update baselines with smaller emit as part of that. --- src/compiler/checker.ts | 3 +-- src/compiler/emitter.ts | 2 +- src/compiler/transformers/destructuring.ts | 18 +++++------------- tests/baselines/reference/objectRest.js | 2 +- .../reference/objectRestAssignment.js | 2 +- tests/baselines/reference/objectRestForOf.js | 2 +- .../baselines/reference/objectRestNegative.js | 2 +- .../baselines/reference/objectRestParameter.js | 2 +- 8 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 039944bd6f0..a4d818b4ace 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -11193,9 +11193,8 @@ namespace ts { let hasComputedStringProperty = false; let hasComputedNumberProperty = false; - let i = 0; let offset = 0; - for (i = 0; i < node.properties.length; i++) { + for (let i = 0; i < node.properties.length; i++) { const memberDecl = node.properties[i]; let member = memberDecl.symbol; if (memberDecl.kind === SyntaxKind.PropertyAssignment || diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 84d5462914c..d9ccc1e3c59 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -45,7 +45,7 @@ var __assign = (this && this.__assign) || Object.assign || function(t) { const restHelper = ` var __rest = (this && this.__rest) || function (s, e) { var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) === -1) + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; return t; };`; diff --git a/src/compiler/transformers/destructuring.ts b/src/compiler/transformers/destructuring.ts index 692d021eb5e..90729a59b43 100644 --- a/src/compiler/transformers/destructuring.ts +++ b/src/compiler/transformers/destructuring.ts @@ -326,7 +326,7 @@ namespace ts { // Assignment for bindingTarget = value.propName should highlight whole property, hence use p as source map node const propAccess = createDestructuringPropertyAccess(value, propName); if (isComputedPropertyName(propName)) { - (computedTempVariables = computedTempVariables || []).push((propAccess as ElementAccessExpression).argumentExpression); + computedTempVariables = append(computedTempVariables, (propAccess as ElementAccessExpression).argumentExpression); } emitDestructuringAssignment(bindingTarget, propAccess, p); } @@ -428,18 +428,11 @@ namespace ts { } if (isComputedPropertyName(getPropertyName(element))) { // get the temp name and put that in there instead, like `_tmp + ""` - const stringifiedTemp = createSynthesizedNode(SyntaxKind.StringLiteral); - stringifiedTemp.pos = location.pos; - stringifiedTemp.end = location.end; - stringifiedTemp.text = ""; - propertyNames.push(createBinary(computedTempVariables.shift(), SyntaxKind.PlusToken, stringifiedTemp)); + propertyNames.push(createBinary(computedTempVariables.shift(), SyntaxKind.PlusToken, createLiteral(""))); } else { - const str = createSynthesizedNode(SyntaxKind.StringLiteral); - str.pos = location.pos; - str.end = location.end; - str.text = getTextOfPropertyName(getPropertyName(element)); - propertyNames.push(str); + const propName = getTextOfPropertyName(getPropertyName(element)); + propertyNames.push(createLiteral(propName, location)); } } const args = createSynthesizedNodeArray([value, createArrayLiteral(propertyNames, location)]); @@ -569,11 +562,10 @@ namespace ts { bindingElements = []; } // Rewrite element to a declaration with an initializer that fetches property - // TODO: Probably save the result of createDestructuringPropertyAccess if propName is a computed property const propName = element.propertyName || element.name; const propAccess = createDestructuringPropertyAccess(value, propName); if (isComputedPropertyName(propName)) { - (computedTempVariables = computedTempVariables || []).push((propAccess as ElementAccessExpression).argumentExpression); + computedTempVariables = append(computedTempVariables, (propAccess as ElementAccessExpression).argumentExpression); } emitBindingElement(element, propAccess); } diff --git a/tests/baselines/reference/objectRest.js b/tests/baselines/reference/objectRest.js index 2f18d23e9e5..46255b24d70 100644 --- a/tests/baselines/reference/objectRest.js +++ b/tests/baselines/reference/objectRest.js @@ -41,7 +41,7 @@ var { [computed]: stillNotGreat, [computed2]: soSo, ...o } = o; //// [objectRest.js] var __rest = (this && this.__rest) || function (s, e) { var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) === -1) + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; return t; }; diff --git a/tests/baselines/reference/objectRestAssignment.js b/tests/baselines/reference/objectRestAssignment.js index 51d9aea192f..ae908eaa662 100644 --- a/tests/baselines/reference/objectRestAssignment.js +++ b/tests/baselines/reference/objectRestAssignment.js @@ -17,7 +17,7 @@ var { a: [{ ...nested2 }, ...y], b: { z, ...c }, ...rest2 } = overEmit; //// [objectRestAssignment.js] var __rest = (this && this.__rest) || function (s, e) { var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) === -1) + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; return t; }; diff --git a/tests/baselines/reference/objectRestForOf.js b/tests/baselines/reference/objectRestForOf.js index dacf4d28165..00c3f79f296 100644 --- a/tests/baselines/reference/objectRestForOf.js +++ b/tests/baselines/reference/objectRestForOf.js @@ -25,7 +25,7 @@ var __assign = (this && this.__assign) || Object.assign || function(t) { }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) === -1) + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; return t; }; diff --git a/tests/baselines/reference/objectRestNegative.js b/tests/baselines/reference/objectRestNegative.js index 57f7b2076a3..767e0a98448 100644 --- a/tests/baselines/reference/objectRestNegative.js +++ b/tests/baselines/reference/objectRestNegative.js @@ -15,7 +15,7 @@ let rest: { b: string } //// [objectRestNegative.js] var __rest = (this && this.__rest) || function (s, e) { var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) === -1) + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; return t; }; diff --git a/tests/baselines/reference/objectRestParameter.js b/tests/baselines/reference/objectRestParameter.js index 3f2aad88e8d..f8a4f2955d3 100644 --- a/tests/baselines/reference/objectRestParameter.js +++ b/tests/baselines/reference/objectRestParameter.js @@ -11,7 +11,7 @@ suddenly(({ x: { z = 12, ...nested }, ...rest } = { x: { z: 1, ka: 1 }, y: 'noo' //// [objectRestParameter.js] var __rest = (this && this.__rest) || function (s, e) { var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) === -1) + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; return t; };