@@ -20111,7 +20111,6 @@ namespace ts {
2011120111
2011220112 function checkObjectLiteralAssignment(node: ObjectLiteralExpression, sourceType: Type): Type {
2011320113 const properties = node.properties;
20114- checkGrammarForDisallowedTrailingComma(properties, Diagnostics.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma);
2011520114 if (strictNullChecks && properties.length === 0) {
2011620115 return checkNonNullType(sourceType, node);
2011720116 }
@@ -20122,7 +20121,7 @@ namespace ts {
2012220121 }
2012320122
2012420123 /** Note: If property cannot be a SpreadAssignment, then allProperties does not need to be provided */
20125- function checkObjectLiteralDestructuringPropertyAssignment(objectLiteralType: Type, property: ObjectLiteralElementLike, allProperties?: ReadonlyArray <ObjectLiteralElementLike>) {
20124+ function checkObjectLiteralDestructuringPropertyAssignment(objectLiteralType: Type, property: ObjectLiteralElementLike, allProperties?: NodeArray <ObjectLiteralElementLike>) {
2012620125 if (property.kind === SyntaxKind.PropertyAssignment || property.kind === SyntaxKind.ShorthandPropertyAssignment) {
2012720126 const name = property.name;
2012820127 if (name.kind === SyntaxKind.ComputedPropertyName) {
@@ -20162,6 +20161,7 @@ namespace ts {
2016220161 }
2016320162 }
2016420163 const type = getRestType(objectLiteralType, nonRestNames, objectLiteralType.symbol);
20164+ checkGrammarForDisallowedTrailingComma(allProperties, Diagnostics.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma);
2016520165 return checkDestructuringAssignment(property.expression, type);
2016620166 }
2016720167 else {
@@ -20171,7 +20171,6 @@ namespace ts {
2017120171
2017220172 function checkArrayLiteralAssignment(node: ArrayLiteralExpression, sourceType: Type, checkMode?: CheckMode): Type {
2017320173 const elements = node.elements;
20174- checkGrammarForDisallowedTrailingComma(elements, Diagnostics.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma);
2017520174 if (languageVersion < ScriptTarget.ES2015 && compilerOptions.downlevelIteration) {
2017620175 checkExternalEmitHelpers(node, ExternalEmitHelpers.Read);
2017720176 }
@@ -20223,6 +20222,7 @@ namespace ts {
2022320222 error((<BinaryExpression>restExpression).operatorToken, Diagnostics.A_rest_element_cannot_have_an_initializer);
2022420223 }
2022520224 else {
20225+ checkGrammarForDisallowedTrailingComma(node.elements, Diagnostics.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma);
2022620226 return checkDestructuringAssignment(restExpression, createArrayType(elementType), checkMode);
2022720227 }
2022820228 }
0 commit comments