Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions src/compiler/parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2106,14 +2106,20 @@ module ts {
function parseObjectLiteral(): ObjectLiteral {
var node = <ObjectLiteral>createNode(SyntaxKind.ObjectLiteral);
parseExpected(SyntaxKind.OpenBraceToken);
if (scanner.hasPrecedingLineBreak()) node.flags |= NodeFlags.MultiLine;
node.properties = parseDelimitedList(ParsingContext.ObjectLiteralMembers, parseObjectLiteralMember, TrailingCommaBehavior.Preserve);
if (scanner.hasPrecedingLineBreak()) {
node.flags |= NodeFlags.MultiLine;
}

// ES3 itself does not accept a trailing comma in an object literal, however, we'd like to preserve it in ES5.
var trailingCommaBehavior = languageVersion === ScriptTarget.ES3 ? TrailingCommaBehavior.Allow : TrailingCommaBehavior.Preserve;

node.properties = parseDelimitedList(ParsingContext.ObjectLiteralMembers, parseObjectLiteralMember, trailingCommaBehavior);
parseExpected(SyntaxKind.CloseBraceToken);

var seen: Map<SymbolFlags> = {};
var Property = 1;
var GetAccessor = 2;
var SetAccesor = 4;
var SetAccesor = 4;
var GetOrSetAccessor = GetAccessor | SetAccesor;
forEach(node.properties, (p: Declaration) => {
if (p.kind === SyntaxKind.OmittedExpression) {
Expand Down
10 changes: 5 additions & 5 deletions tests/baselines/reference/assignmentCompatBug2.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,21 +50,21 @@ b3 = {
g: function (s) {
return 0;
},
m: 0,
m: 0
};
b3 = {
f: function (n) {
return 0;
},
g: function (s) {
return 0;
},
}
};
b3 = {
f: function (n) {
return 0;
},
m: 0,
m: 0
};
b3 = {
f: function (n) {
Expand All @@ -77,7 +77,7 @@ b3 = {
n: 0,
k: function (a) {
return null;
},
}
};
b3 = {
f: function (n) {
Expand All @@ -89,5 +89,5 @@ b3 = {
n: 0,
k: function (a) {
return null;
},
}
};
2 changes: 1 addition & 1 deletion tests/baselines/reference/commentsOnObjectLiteral2.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ var Person = makeClass(
var Person = makeClass({
initialize: function (name) {
this.name = name;
},
}
});
2 changes: 1 addition & 1 deletion tests/baselines/reference/convertKeywordsYes.js
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@ var bigObject = {
var: 0,
void: 0,
while: 0,
with: 0,
with: 0
};
var bigClass = (function () {
function bigClass() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ var m1;
})(m1 || (m1 = {}));
var d = {
m1: { m: m1 },
m2: { c: m1.c },
m2: { c: m1.c }
};


Expand Down
8 changes: 4 additions & 4 deletions tests/baselines/reference/objectLitIndexerContextualType.js
Original file line number Diff line number Diff line change
Expand Up @@ -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; }
};
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,5 @@ var s = $.extend({
dataType: "json",
converters: { "text json": "" },
traditional: true,
timeout: 12,
timeout: 12
}, "");
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ var r4 = a["~!@#$%^&*()_+{}|:'<>?\/.,`"];
var b = {
" ": 1,
"a b": "",
"~!@#$%^&*()_+{}|:'<>?\/.,`": 1,
"~!@#$%^&*()_+{}|:'<>?\/.,`": 1
};
var r = b[" "];
var r2 = b[" "];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,5 @@ var b = {
foo: function (x) {
},
foo: function (x) {
},
}
};
4 changes: 2 additions & 2 deletions tests/baselines/reference/thisInPropertyBoundDeclarations.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,13 +101,13 @@ var A = (function () {
this.prop4 = {
a: function () {
return this;
},
}
};
this.prop5 = function () {
return {
a: function () {
return this;
},
}
};
};
}
Expand Down
25 changes: 25 additions & 0 deletions tests/baselines/reference/trailingCommasES3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//// [trailingCommasES3.ts]

var o1 = { a: 1, b: 2 };
var o2 = { a: 1, b: 2, };
var o3 = { a: 1, };
var o4 = {};

var a1 = [1, 2];
var a2 = [1, 2, ];
var a3 = [1, ];
var a4 = [];
var a5 = [1, , ];
var a6 = [, , ];

//// [trailingCommasES3.js]
var o1 = { a: 1, b: 2 };
var o2 = { a: 1, b: 2 };
var o3 = { a: 1 };
var o4 = {};
var a1 = [1, 2];
var a2 = [1, 2, ];
var a3 = [1, ];
var a4 = [];
var a5 = [1, , ];
var a6 = [, , ];
25 changes: 25 additions & 0 deletions tests/baselines/reference/trailingCommasES5.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//// [trailingCommasES5.ts]

var o1 = { a: 1, b: 2 };
var o2 = { a: 1, b: 2, };
var o3 = { a: 1, };
var o4 = {};

var a1 = [1, 2];
var a2 = [1, 2, ];
var a3 = [1, ];
var a4 = [];
var a5 = [1, , ];
var a6 = [, , ];

//// [trailingCommasES5.js]
var o1 = { a: 1, b: 2 };
var o2 = { a: 1, b: 2, };
var o3 = { a: 1, };
var o4 = {};
var a1 = [1, 2];
var a2 = [1, 2, ];
var a3 = [1, ];
var a4 = [];
var a5 = [1, , ];
var a6 = [, , ];
13 changes: 13 additions & 0 deletions tests/cases/compiler/trailingCommasES3.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// @target: es3

var o1 = { a: 1, b: 2 };
var o2 = { a: 1, b: 2, };
var o3 = { a: 1, };
var o4 = {};

var a1 = [1, 2];
var a2 = [1, 2, ];
var a3 = [1, ];
var a4 = [];
var a5 = [1, , ];
var a6 = [, , ];
13 changes: 13 additions & 0 deletions tests/cases/compiler/trailingCommasES5.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// @target: es5

var o1 = { a: 1, b: 2 };
var o2 = { a: 1, b: 2, };
var o3 = { a: 1, };
var o4 = {};

var a1 = [1, 2];
var a2 = [1, 2, ];
var a3 = [1, ];
var a4 = [];
var a5 = [1, , ];
var a6 = [, , ];