Skip to content

Commit a84c7ae

Browse files
committed
Rename SpreadElementExpression -> SpreadAssignment
and SpreadExpression (formerly SpreadElementExpression) -> SpreadElement
1 parent a55ed26 commit a84c7ae

13 files changed

+64
-66
lines changed

src/compiler/binder.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -1138,8 +1138,8 @@ namespace ts {
11381138
}
11391139
else if (node.kind === SyntaxKind.ArrayLiteralExpression) {
11401140
for (const e of (<ArrayLiteralExpression>node).elements) {
1141-
if (e.kind === SyntaxKind.SpreadExpression) {
1142-
bindAssignmentTargetFlow((<SpreadExpression>e).expression);
1141+
if (e.kind === SyntaxKind.SpreadElement) {
1142+
bindAssignmentTargetFlow((<SpreadElement>e).expression);
11431143
}
11441144
else {
11451145
bindDestructuringTargetFlow(e);
@@ -1154,8 +1154,8 @@ namespace ts {
11541154
else if (p.kind === SyntaxKind.ShorthandPropertyAssignment) {
11551155
bindAssignmentTargetFlow((<ShorthandPropertyAssignment>p).name);
11561156
}
1157-
else if (p.kind === SyntaxKind.SpreadElementExpression) {
1158-
bindAssignmentTargetFlow((<SpreadElementExpression>p).expression);
1157+
else if (p.kind === SyntaxKind.SpreadAssignment) {
1158+
bindAssignmentTargetFlow((<SpreadAssignment>p).expression);
11591159
}
11601160
}
11611161
}
@@ -1929,7 +1929,7 @@ namespace ts {
19291929
case SyntaxKind.EnumMember:
19301930
return bindPropertyOrMethodOrAccessor(<Declaration>node, SymbolFlags.EnumMember, SymbolFlags.EnumMemberExcludes);
19311931

1932-
case SyntaxKind.SpreadElementExpression:
1932+
case SyntaxKind.SpreadAssignment:
19331933
case SyntaxKind.JsxSpreadAttribute:
19341934
emitFlags |= NodeFlags.HasSpreadAttribute;
19351935
return;
@@ -3127,8 +3127,8 @@ namespace ts {
31273127
}
31283128
break;
31293129

3130-
case SyntaxKind.SpreadExpression:
3131-
case SyntaxKind.SpreadElementExpression:
3130+
case SyntaxKind.SpreadElement:
3131+
case SyntaxKind.SpreadAssignment:
31323132
// This node is ES6 or ES future syntax, but is handled by a containing node.
31333133
transformFlags |= TransformFlags.ContainsSpreadExpression;
31343134
break;

src/compiler/checker.ts

+15-15
Original file line numberDiff line numberDiff line change
@@ -8640,7 +8640,7 @@ namespace ts {
86408640
return getTypeOfDestructuredArrayElement(getAssignedType(node), indexOf(node.elements, element));
86418641
}
86428642

8643-
function getAssignedTypeOfSpreadExpression(node: SpreadExpression): Type {
8643+
function getAssignedTypeOfSpreadExpression(node: SpreadElement): Type {
86448644
return getTypeOfDestructuredSpreadExpression(getAssignedType(<ArrayLiteralExpression>node.parent));
86458645
}
86468646

@@ -8665,8 +8665,8 @@ namespace ts {
86658665
return undefinedType;
86668666
case SyntaxKind.ArrayLiteralExpression:
86678667
return getAssignedTypeOfArrayLiteralElement(<ArrayLiteralExpression>parent, node);
8668-
case SyntaxKind.SpreadExpression:
8669-
return getAssignedTypeOfSpreadExpression(<SpreadExpression>parent);
8668+
case SyntaxKind.SpreadElement:
8669+
return getAssignedTypeOfSpreadExpression(<SpreadElement>parent);
86708670
case SyntaxKind.PropertyAssignment:
86718671
return getAssignedTypeOfPropertyAssignment(<PropertyAssignment>parent);
86728672
case SyntaxKind.ShorthandPropertyAssignment:
@@ -10697,7 +10697,7 @@ namespace ts {
1069710697
return mapper && mapper.context;
1069810698
}
1069910699

10700-
function checkSpreadExpression(node: SpreadExpression, contextualMapper?: TypeMapper): Type {
10700+
function checkSpreadExpression(node: SpreadElement, contextualMapper?: TypeMapper): Type {
1070110701
// It is usually not safe to call checkExpressionCached if we can be contextually typing.
1070210702
// You can tell that we are contextually typing because of the contextualMapper parameter.
1070310703
// While it is true that a spread element can have a contextual type, it does not do anything
@@ -10719,7 +10719,7 @@ namespace ts {
1071910719
const elementTypes: Type[] = [];
1072010720
const inDestructuringPattern = isAssignmentTarget(node);
1072110721
for (const e of elements) {
10722-
if (inDestructuringPattern && e.kind === SyntaxKind.SpreadExpression) {
10722+
if (inDestructuringPattern && e.kind === SyntaxKind.SpreadElement) {
1072310723
// Given the following situation:
1072410724
// var c: {};
1072510725
// [...c] = ["", 0];
@@ -10732,7 +10732,7 @@ namespace ts {
1073210732
// get the contextual element type from it. So we do something similar to
1073310733
// getContextualTypeForElementExpression, which will crucially not error
1073410734
// if there is no index type / iterated type.
10735-
const restArrayType = checkExpression((<SpreadExpression>e).expression, contextualMapper);
10735+
const restArrayType = checkExpression((<SpreadElement>e).expression, contextualMapper);
1073610736
const restElementType = getIndexTypeOfType(restArrayType, IndexKind.Number) ||
1073710737
(languageVersion >= ScriptTarget.ES2015 ? getElementTypeOfIterable(restArrayType, /*errorNode*/ undefined) : undefined);
1073810738
if (restElementType) {
@@ -10743,7 +10743,7 @@ namespace ts {
1074310743
const type = checkExpressionForMutableLocation(e, contextualMapper);
1074410744
elementTypes.push(type);
1074510745
}
10746-
hasSpreadElement = hasSpreadElement || e.kind === SyntaxKind.SpreadExpression;
10746+
hasSpreadElement = hasSpreadElement || e.kind === SyntaxKind.SpreadElement;
1074710747
}
1074810748
if (!hasSpreadElement) {
1074910749
// If array literal is actually a destructuring pattern, mark it as an implied type. We do this such
@@ -10927,7 +10927,7 @@ namespace ts {
1092710927
prop.target = member;
1092810928
member = prop;
1092910929
}
10930-
else if (memberDecl.kind === SyntaxKind.SpreadElementExpression) {
10930+
else if (memberDecl.kind === SyntaxKind.SpreadAssignment) {
1093110931
if (propertiesArray.length > 0) {
1093210932
spread = getSpreadType(spread, createObjectLiteralType(), node.symbol);
1093310933
propertiesArray = [];
@@ -10936,7 +10936,7 @@ namespace ts {
1093610936
hasComputedNumberProperty = false;
1093710937
typeFlags = 0;
1093810938
}
10939-
const type = checkExpression((memberDecl as SpreadElementExpression).expression);
10939+
const type = checkExpression((memberDecl as SpreadAssignment).expression);
1094010940
if (!(type.flags & (TypeFlags.Object | TypeFlags.Any))) {
1094110941
error(memberDecl, Diagnostics.Spread_types_may_only_be_created_from_object_types);
1094210942
return unknownType;
@@ -11905,7 +11905,7 @@ namespace ts {
1190511905
function getSpreadArgumentIndex(args: Expression[]): number {
1190611906
for (let i = 0; i < args.length; i++) {
1190711907
const arg = args[i];
11908-
if (arg && arg.kind === SyntaxKind.SpreadExpression) {
11908+
if (arg && arg.kind === SyntaxKind.SpreadElement) {
1190911909
return i;
1191011910
}
1191111911
}
@@ -13893,7 +13893,7 @@ namespace ts {
1389313893
const elements = node.elements;
1389413894
const element = elements[elementIndex];
1389513895
if (element.kind !== SyntaxKind.OmittedExpression) {
13896-
if (element.kind !== SyntaxKind.SpreadExpression) {
13896+
if (element.kind !== SyntaxKind.SpreadElement) {
1389713897
const propName = "" + elementIndex;
1389813898
const type = isTypeAny(sourceType)
1389913899
? sourceType
@@ -13920,7 +13920,7 @@ namespace ts {
1392013920
error(element, Diagnostics.A_rest_element_must_be_last_in_an_array_destructuring_pattern);
1392113921
}
1392213922
else {
13923-
const restExpression = (<SpreadExpression>element).expression;
13923+
const restExpression = (<SpreadElement>element).expression;
1392413924
if (restExpression.kind === SyntaxKind.BinaryExpression && (<BinaryExpression>restExpression).operatorToken.kind === SyntaxKind.EqualsToken) {
1392513925
error((<BinaryExpression>restExpression).operatorToken, Diagnostics.A_rest_element_cannot_have_an_initializer);
1392613926
}
@@ -14553,8 +14553,8 @@ namespace ts {
1455314553
return checkBinaryExpression(<BinaryExpression>node, contextualMapper);
1455414554
case SyntaxKind.ConditionalExpression:
1455514555
return checkConditionalExpression(<ConditionalExpression>node, contextualMapper);
14556-
case SyntaxKind.SpreadExpression:
14557-
return checkSpreadExpression(<SpreadExpression>node, contextualMapper);
14556+
case SyntaxKind.SpreadElement:
14557+
return checkSpreadExpression(<SpreadElement>node, contextualMapper);
1455814558
case SyntaxKind.OmittedExpression:
1455914559
return undefinedWideningType;
1456014560
case SyntaxKind.YieldExpression:
@@ -20511,7 +20511,7 @@ namespace ts {
2051120511
const GetOrSetAccessor = GetAccessor | SetAccessor;
2051220512

2051320513
for (const prop of node.properties) {
20514-
if (prop.kind === SyntaxKind.SpreadElementExpression) {
20514+
if (prop.kind === SyntaxKind.SpreadAssignment) {
2051520515
continue;
2051620516
}
2051720517
const name = prop.name;

src/compiler/emitter.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -822,8 +822,8 @@ const _super = (function (geti, seti) {
822822
return emitTemplateExpression(<TemplateExpression>node);
823823
case SyntaxKind.YieldExpression:
824824
return emitYieldExpression(<YieldExpression>node);
825-
case SyntaxKind.SpreadExpression:
826-
return emitSpreadExpression(<SpreadExpression>node);
825+
case SyntaxKind.SpreadElement:
826+
return emitSpreadExpression(<SpreadElement>node);
827827
case SyntaxKind.ClassExpression:
828828
return emitClassExpression(<ClassExpression>node);
829829
case SyntaxKind.OmittedExpression:
@@ -1374,7 +1374,7 @@ const _super = (function (geti, seti) {
13741374
emitExpressionWithPrefix(" ", node.expression);
13751375
}
13761376

1377-
function emitSpreadExpression(node: SpreadExpression) {
1377+
function emitSpreadExpression(node: SpreadElement) {
13781378
write("...");
13791379
emitExpression(node.expression);
13801380
}

src/compiler/factory.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -692,12 +692,12 @@ namespace ts {
692692
}
693693

694694
export function createSpread(expression: Expression, location?: TextRange) {
695-
const node = <SpreadExpression>createNode(SyntaxKind.SpreadExpression, location);
695+
const node = <SpreadElement>createNode(SyntaxKind.SpreadElement, location);
696696
node.expression = parenthesizeExpressionForList(expression);
697697
return node;
698698
}
699699

700-
export function updateSpread(node: SpreadExpression, expression: Expression) {
700+
export function updateSpread(node: SpreadElement, expression: Expression) {
701701
if (node.expression !== expression) {
702702
return updateNode(createSpread(expression, node), node);
703703
}

src/compiler/parser.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ namespace ts {
7474
visitNode(cbNode, (<ShorthandPropertyAssignment>node).questionToken) ||
7575
visitNode(cbNode, (<ShorthandPropertyAssignment>node).equalsToken) ||
7676
visitNode(cbNode, (<ShorthandPropertyAssignment>node).objectAssignmentInitializer);
77-
case SyntaxKind.SpreadElementExpression:
78-
return visitNode(cbNode, (<SpreadElementExpression>node).expression);
77+
case SyntaxKind.SpreadAssignment:
78+
return visitNode(cbNode, (<SpreadAssignment>node).expression);
7979
case SyntaxKind.Parameter:
8080
case SyntaxKind.PropertyDeclaration:
8181
case SyntaxKind.PropertySignature:
@@ -199,8 +199,8 @@ namespace ts {
199199
visitNode(cbNode, (<ConditionalExpression>node).whenTrue) ||
200200
visitNode(cbNode, (<ConditionalExpression>node).colonToken) ||
201201
visitNode(cbNode, (<ConditionalExpression>node).whenFalse);
202-
case SyntaxKind.SpreadExpression:
203-
return visitNode(cbNode, (<SpreadExpression>node).expression);
202+
case SyntaxKind.SpreadElement:
203+
return visitNode(cbNode, (<SpreadElement>node).expression);
204204
case SyntaxKind.Block:
205205
case SyntaxKind.ModuleBlock:
206206
return visitNodes(cbNodes, (<Block>node).statements);
@@ -4123,15 +4123,15 @@ namespace ts {
41234123
return finishNode(node);
41244124
}
41254125

4126-
function parseSpreadExpression(): Expression {
4127-
const node = <SpreadExpression>createNode(SyntaxKind.SpreadExpression);
4126+
function parseSpreadElement(): Expression {
4127+
const node = <SpreadElement>createNode(SyntaxKind.SpreadElement);
41284128
parseExpected(SyntaxKind.DotDotDotToken);
41294129
node.expression = parseAssignmentExpressionOrHigher();
41304130
return finishNode(node);
41314131
}
41324132

41334133
function parseArgumentOrArrayLiteralElement(): Expression {
4134-
return token() === SyntaxKind.DotDotDotToken ? parseSpreadExpression() :
4134+
return token() === SyntaxKind.DotDotDotToken ? parseSpreadElement() :
41354135
token() === SyntaxKind.CommaToken ? <Expression>createNode(SyntaxKind.OmittedExpression) :
41364136
parseAssignmentExpressionOrHigher();
41374137
}
@@ -4166,7 +4166,7 @@ namespace ts {
41664166
const fullStart = scanner.getStartPos();
41674167
const dotDotDotToken = parseOptionalToken(SyntaxKind.DotDotDotToken);
41684168
if (dotDotDotToken) {
4169-
const spreadElement = <SpreadElementExpression>createNode(SyntaxKind.SpreadElementExpression, fullStart);
4169+
const spreadElement = <SpreadAssignment>createNode(SyntaxKind.SpreadAssignment, fullStart);
41704170
spreadElement.expression = parseAssignmentExpressionOrHigher();
41714171
return addJSDocComment(finishNode(spreadElement));
41724172
}

src/compiler/transformers/destructuring.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -308,11 +308,11 @@ namespace ts {
308308
const e = elements[i];
309309
if (e.kind !== SyntaxKind.OmittedExpression) {
310310
// Assignment for target = value.propName should highligh whole property, hence use e as source map node
311-
if (e.kind !== SyntaxKind.SpreadExpression) {
311+
if (e.kind !== SyntaxKind.SpreadElement) {
312312
emitDestructuringAssignment(e, createElementAccess(value, createLiteral(i)), e);
313313
}
314314
else if (i === numElements - 1) {
315-
emitDestructuringAssignment((<SpreadExpression>e).expression, createArraySlice(value, i), e);
315+
emitDestructuringAssignment((<SpreadElement>e).expression, createArraySlice(value, i), e);
316316
}
317317
}
318318
}

src/compiler/transformers/es2015.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -2890,7 +2890,7 @@ namespace ts {
28902890
*
28912891
* @param node A SpreadExpression node.
28922892
*/
2893-
function visitExpressionOfSpread(node: SpreadExpression) {
2893+
function visitExpressionOfSpread(node: SpreadElement) {
28942894
return visitNode(node.expression, visitor, isExpression);
28952895
}
28962896

@@ -3266,11 +3266,11 @@ namespace ts {
32663266
}
32673267

32683268
const callArgument = singleOrUndefined((<CallExpression>statementExpression).arguments);
3269-
if (!callArgument || !nodeIsSynthesized(callArgument) || callArgument.kind !== SyntaxKind.SpreadExpression) {
3269+
if (!callArgument || !nodeIsSynthesized(callArgument) || callArgument.kind !== SyntaxKind.SpreadElement) {
32703270
return false;
32713271
}
32723272

3273-
const expression = (<SpreadExpression>callArgument).expression;
3273+
const expression = (<SpreadElement>callArgument).expression;
32743274
return isIdentifier(expression) && expression === parameter.name;
32753275
}
32763276
}

src/compiler/transformers/esnext.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ namespace ts {
3636
let chunkObject: (ShorthandPropertyAssignment | PropertyAssignment)[];
3737
const objects: Expression[] = [];
3838
for (const e of elements) {
39-
if (e.kind === SyntaxKind.SpreadElementExpression) {
39+
if (e.kind === SyntaxKind.SpreadAssignment) {
4040
if (chunkObject) {
4141
objects.push(createObjectLiteral(chunkObject));
4242
chunkObject = undefined;
4343
}
44-
const target = (e as SpreadElementExpression).expression;
44+
const target = (e as SpreadAssignment).expression;
4545
objects.push(visitNode(target, visitor, isExpression));
4646
}
4747
else {

src/compiler/types.ts

+7-9
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ namespace ts {
246246
ConditionalExpression,
247247
TemplateExpression,
248248
YieldExpression,
249-
SpreadExpression,
249+
SpreadElement,
250250
ClassExpression,
251251
OmittedExpression,
252252
ExpressionWithTypeArguments,
@@ -320,7 +320,7 @@ namespace ts {
320320
// Property assignments
321321
PropertyAssignment,
322322
ShorthandPropertyAssignment,
323-
SpreadElementExpression,
323+
SpreadAssignment,
324324

325325
// Enum
326326
EnumMember,
@@ -662,7 +662,6 @@ namespace ts {
662662
initializer?: Expression; // Optional initializer
663663
}
664664

665-
// @kind(SyntaxKind.PropertyDeclaration)
666665
export interface PropertyDeclaration extends ClassElement {
667666
kind: SyntaxKind.PropertyDeclaration;
668667
questionToken?: QuestionToken; // Present for use with reporting a grammar error
@@ -676,7 +675,7 @@ namespace ts {
676675
name?: PropertyName;
677676
}
678677

679-
export type ObjectLiteralElementLike = PropertyAssignment | ShorthandPropertyAssignment | MethodDeclaration | AccessorDeclaration | SpreadElementExpression;
678+
export type ObjectLiteralElementLike = PropertyAssignment | ShorthandPropertyAssignment | MethodDeclaration | AccessorDeclaration | SpreadAssignment;
680679

681680
export interface PropertyAssignment extends ObjectLiteralElement {
682681
kind: SyntaxKind.PropertyAssignment;
@@ -695,8 +694,8 @@ namespace ts {
695694
objectAssignmentInitializer?: Expression;
696695
}
697696

698-
export interface SpreadElementExpression extends ObjectLiteralElement {
699-
kind: SyntaxKind.SpreadElementExpression;
697+
export interface SpreadAssignment extends ObjectLiteralElement {
698+
kind: SyntaxKind.SpreadAssignment;
700699
expression: Expression;
701700
}
702701

@@ -1285,9 +1284,8 @@ namespace ts {
12851284
multiLine?: boolean;
12861285
}
12871286

1288-
// @kind(SyntaxKind.SpreadExpression)
1289-
export interface SpreadExpression extends Expression {
1290-
kind: SyntaxKind.SpreadExpression;
1287+
export interface SpreadElement extends Expression {
1288+
kind: SyntaxKind.SpreadElement;
12911289
expression: Expression;
12921290
}
12931291

0 commit comments

Comments
 (0)