@@ -1063,8 +1063,8 @@ namespace ts {
1063
1063
}
1064
1064
else if ( node . kind === SyntaxKind . ArrayLiteralExpression ) {
1065
1065
for ( const e of ( < ArrayLiteralExpression > node ) . elements ) {
1066
- if ( e . kind === SyntaxKind . SpreadElementExpression ) {
1067
- bindAssignmentTargetFlow ( ( < SpreadElementExpression > e ) . expression ) ;
1066
+ if ( e . kind === SyntaxKind . SpreadExpression ) {
1067
+ bindAssignmentTargetFlow ( ( < SpreadExpression > e ) . expression ) ;
1068
1068
}
1069
1069
else {
1070
1070
bindDestructuringTargetFlow ( e ) ;
@@ -1079,6 +1079,9 @@ namespace ts {
1079
1079
else if ( p . kind === SyntaxKind . ShorthandPropertyAssignment ) {
1080
1080
bindAssignmentTargetFlow ( ( < ShorthandPropertyAssignment > p ) . name ) ;
1081
1081
}
1082
+ else if ( p . kind === SyntaxKind . SpreadElementExpression ) {
1083
+ bindAssignmentTargetFlow ( ( < SpreadElementExpression > p ) . expression ) ;
1084
+ }
1082
1085
}
1083
1086
}
1084
1087
}
@@ -1825,8 +1828,9 @@ namespace ts {
1825
1828
case SyntaxKind . EnumMember :
1826
1829
return bindPropertyOrMethodOrAccessor ( < Declaration > node , SymbolFlags . EnumMember , SymbolFlags . EnumMemberExcludes ) ;
1827
1830
1831
+ case SyntaxKind . SpreadElementExpression :
1828
1832
case SyntaxKind . JsxSpreadAttribute :
1829
- emitFlags |= NodeFlags . HasJsxSpreadAttributes ;
1833
+ emitFlags |= NodeFlags . HasSpreadAttribute ;
1830
1834
return ;
1831
1835
1832
1836
case SyntaxKind . CallSignature :
@@ -2368,9 +2372,9 @@ namespace ts {
2368
2372
const expression = node . expression ;
2369
2373
const expressionKind = expression . kind ;
2370
2374
2371
- if ( subtreeFlags & TransformFlags . ContainsSpreadElementExpression
2375
+ if ( subtreeFlags & TransformFlags . ContainsSpreadExpression
2372
2376
|| isSuperOrSuperProperty ( expression , expressionKind ) ) {
2373
- // If the this node contains a SpreadElementExpression , or is a super call, then it is an ES6
2377
+ // If the this node contains a SpreadExpression , or is a super call, then it is an ES6
2374
2378
// node.
2375
2379
transformFlags |= TransformFlags . AssertES6 ;
2376
2380
}
@@ -2956,9 +2960,10 @@ namespace ts {
2956
2960
}
2957
2961
break ;
2958
2962
2963
+ case SyntaxKind . SpreadExpression :
2959
2964
case SyntaxKind . SpreadElementExpression :
2960
- // This node is ES6 syntax, but is handled by a containing node.
2961
- transformFlags |= TransformFlags . ContainsSpreadElementExpression ;
2965
+ // This node is ES6 or ES future syntax, but is handled by a containing node.
2966
+ transformFlags |= TransformFlags . ContainsSpreadExpression ;
2962
2967
break ;
2963
2968
2964
2969
case SyntaxKind . SuperKeyword :
@@ -2996,13 +3001,19 @@ namespace ts {
2996
3001
transformFlags |= TransformFlags . ContainsLexicalThis ;
2997
3002
}
2998
3003
3004
+ if ( subtreeFlags & TransformFlags . ContainsSpreadExpression ) {
3005
+ // If an ObjectLiteralExpression contains a spread element, then it
3006
+ // is an ES experimental node.
3007
+ transformFlags |= TransformFlags . AssertExperimental ;
3008
+ }
3009
+
2999
3010
break ;
3000
3011
3001
3012
case SyntaxKind . ArrayLiteralExpression :
3002
3013
case SyntaxKind . NewExpression :
3003
3014
excludeFlags = TransformFlags . ArrayLiteralOrCallOrNewExcludes ;
3004
- if ( subtreeFlags & TransformFlags . ContainsSpreadElementExpression ) {
3005
- // If the this node contains a SpreadElementExpression , then it is an ES6
3015
+ if ( subtreeFlags & TransformFlags . ContainsSpreadExpression ) {
3016
+ // If the this node contains a SpreadExpression , then it is an ES6
3006
3017
// node.
3007
3018
transformFlags |= TransformFlags . AssertES6 ;
3008
3019
}
0 commit comments