From fe4c738b01daea80f95feeff5adc0baf9cf366fb Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 28 Jul 2014 11:34:30 -0700 Subject: [PATCH] No longer emit trailing comma on object literals. This was done because trailing commas in object literals are not accepted by ES3. Fixes #271. --- src/compiler/parser.ts | 2 +- tests/baselines/reference/assignmentCompatBug2.js | 10 +++++----- tests/baselines/reference/commentsOnObjectLiteral2.js | 2 +- tests/baselines/reference/convertKeywordsYes.js | 2 +- .../declFileModuleAssignmentInObjectLiteralProperty.js | 2 +- .../reference/objectLitIndexerContextualType.js | 8 ++++---- .../reference/objectLiteralParameterResolution.js | 2 +- ...ctTypeWithStringNamedPropertyOfIllegalCharacters.js | 2 +- .../stringLiteralTypesInImplementationSignatures2.js | 2 +- .../reference/thisInPropertyBoundDeclarations.js | 4 ++-- 10 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 20bd662166d..eec1b10b421 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -2107,7 +2107,7 @@ module ts { var node = createNode(SyntaxKind.ObjectLiteral); parseExpected(SyntaxKind.OpenBraceToken); if (scanner.hasPrecedingLineBreak()) node.flags |= NodeFlags.MultiLine; - node.properties = parseDelimitedList(ParsingContext.ObjectLiteralMembers, parseObjectLiteralMember, TrailingCommaBehavior.Preserve); + node.properties = parseDelimitedList(ParsingContext.ObjectLiteralMembers, parseObjectLiteralMember, TrailingCommaBehavior.Allow); parseExpected(SyntaxKind.CloseBraceToken); var seen: Map = {}; diff --git a/tests/baselines/reference/assignmentCompatBug2.js b/tests/baselines/reference/assignmentCompatBug2.js index f7b4ea9b490..10c2a090ca5 100644 --- a/tests/baselines/reference/assignmentCompatBug2.js +++ b/tests/baselines/reference/assignmentCompatBug2.js @@ -50,7 +50,7 @@ b3 = { g: function (s) { return 0; }, - m: 0, + m: 0 }; b3 = { f: function (n) { @@ -58,13 +58,13 @@ b3 = { }, g: function (s) { return 0; - }, + } }; b3 = { f: function (n) { return 0; }, - m: 0, + m: 0 }; b3 = { f: function (n) { @@ -77,7 +77,7 @@ b3 = { n: 0, k: function (a) { return null; - }, + } }; b3 = { f: function (n) { @@ -89,5 +89,5 @@ b3 = { n: 0, k: function (a) { return null; - }, + } }; diff --git a/tests/baselines/reference/commentsOnObjectLiteral2.js b/tests/baselines/reference/commentsOnObjectLiteral2.js index 0bdab49ed8f..cc64db96c01 100644 --- a/tests/baselines/reference/commentsOnObjectLiteral2.js +++ b/tests/baselines/reference/commentsOnObjectLiteral2.js @@ -16,5 +16,5 @@ var Person = makeClass( var Person = makeClass({ initialize: function (name) { this.name = name; - }, + } }); diff --git a/tests/baselines/reference/convertKeywordsYes.js b/tests/baselines/reference/convertKeywordsYes.js index 8055b8dff24..b6572cf9cf9 100644 --- a/tests/baselines/reference/convertKeywordsYes.js +++ b/tests/baselines/reference/convertKeywordsYes.js @@ -380,7 +380,7 @@ var bigObject = { var: 0, void: 0, while: 0, - with: 0, + with: 0 }; var bigClass = (function () { function bigClass() { diff --git a/tests/baselines/reference/declFileModuleAssignmentInObjectLiteralProperty.js b/tests/baselines/reference/declFileModuleAssignmentInObjectLiteralProperty.js index 1b361e9e048..443933069da 100644 --- a/tests/baselines/reference/declFileModuleAssignmentInObjectLiteralProperty.js +++ b/tests/baselines/reference/declFileModuleAssignmentInObjectLiteralProperty.js @@ -21,7 +21,7 @@ var m1; })(m1 || (m1 = {})); var d = { m1: { m: m1 }, - m2: { c: m1.c }, + m2: { c: m1.c } }; diff --git a/tests/baselines/reference/objectLitIndexerContextualType.js b/tests/baselines/reference/objectLitIndexerContextualType.js index 4f03dec3594..f0cf90724b3 100644 --- a/tests/baselines/reference/objectLitIndexerContextualType.js +++ b/tests/baselines/reference/objectLitIndexerContextualType.js @@ -26,14 +26,14 @@ y = { var x; var y; x = { - s: function (t) { return t * t; }, + s: function (t) { return t * t; } }; x = { - 0: function (t) { return t * t; }, + 0: function (t) { return t * t; } }; y = { - s: function (t) { return t * t; }, + s: function (t) { return t * t; } }; y = { - 0: function (t) { return t * t; }, + 0: function (t) { return t * t; } }; diff --git a/tests/baselines/reference/objectLiteralParameterResolution.js b/tests/baselines/reference/objectLiteralParameterResolution.js index 81d5fb98a42..5912a2229b1 100644 --- a/tests/baselines/reference/objectLiteralParameterResolution.js +++ b/tests/baselines/reference/objectLiteralParameterResolution.js @@ -25,5 +25,5 @@ var s = $.extend({ dataType: "json", converters: { "text json": "" }, traditional: true, - timeout: 12, + timeout: 12 }, ""); diff --git a/tests/baselines/reference/objectTypeWithStringNamedPropertyOfIllegalCharacters.js b/tests/baselines/reference/objectTypeWithStringNamedPropertyOfIllegalCharacters.js index 51f6fce1d73..9c674854cdc 100644 --- a/tests/baselines/reference/objectTypeWithStringNamedPropertyOfIllegalCharacters.js +++ b/tests/baselines/reference/objectTypeWithStringNamedPropertyOfIllegalCharacters.js @@ -77,7 +77,7 @@ var r4 = a["~!@#$%^&*()_+{}|:'<>?\/.,`"]; var b = { " ": 1, "a b": "", - "~!@#$%^&*()_+{}|:'<>?\/.,`": 1, + "~!@#$%^&*()_+{}|:'<>?\/.,`": 1 }; var r = b[" "]; var r2 = b[" "]; diff --git a/tests/baselines/reference/stringLiteralTypesInImplementationSignatures2.js b/tests/baselines/reference/stringLiteralTypesInImplementationSignatures2.js index 9667537f977..577e388cc48 100644 --- a/tests/baselines/reference/stringLiteralTypesInImplementationSignatures2.js +++ b/tests/baselines/reference/stringLiteralTypesInImplementationSignatures2.js @@ -44,5 +44,5 @@ var b = { foo: function (x) { }, foo: function (x) { - }, + } }; diff --git a/tests/baselines/reference/thisInPropertyBoundDeclarations.js b/tests/baselines/reference/thisInPropertyBoundDeclarations.js index de3b081413d..f98ea85f997 100644 --- a/tests/baselines/reference/thisInPropertyBoundDeclarations.js +++ b/tests/baselines/reference/thisInPropertyBoundDeclarations.js @@ -101,13 +101,13 @@ var A = (function () { this.prop4 = { a: function () { return this; - }, + } }; this.prop5 = function () { return { a: function () { return this; - }, + } }; }; }