Skip to content

Commit cd5a6cc

Browse files
author
Kanchalai Tanglertsampan
committed
Merge branch 'object-spread' into wip-reactOverload
2 parents f7c7c00 + 0f773c5 commit cd5a6cc

File tree

61 files changed

+2969
-244
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+2969
-244
lines changed

Jakefile.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ var compilerSources = [
7272
"transformers/module/system.ts",
7373
"transformers/module/module.ts",
7474
"transformers/jsx.ts",
75+
"transformers/experimental.ts",
7576
"transformers/es7.ts",
7677
"transformers/generators.ts",
7778
"transformers/es6.ts",
@@ -106,6 +107,7 @@ var servicesSources = [
106107
"transformers/module/system.ts",
107108
"transformers/module/module.ts",
108109
"transformers/jsx.ts",
110+
"transformers/experimental.ts",
109111
"transformers/es7.ts",
110112
"transformers/generators.ts",
111113
"transformers/es6.ts",

src/compiler/binder.ts

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,8 +1063,8 @@ namespace ts {
10631063
}
10641064
else if (node.kind === SyntaxKind.ArrayLiteralExpression) {
10651065
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);
10681068
}
10691069
else {
10701070
bindDestructuringTargetFlow(e);
@@ -1079,6 +1079,9 @@ namespace ts {
10791079
else if (p.kind === SyntaxKind.ShorthandPropertyAssignment) {
10801080
bindAssignmentTargetFlow((<ShorthandPropertyAssignment>p).name);
10811081
}
1082+
else if (p.kind === SyntaxKind.SpreadElementExpression) {
1083+
bindAssignmentTargetFlow((<SpreadElementExpression>p).expression);
1084+
}
10821085
}
10831086
}
10841087
}
@@ -1825,8 +1828,9 @@ namespace ts {
18251828
case SyntaxKind.EnumMember:
18261829
return bindPropertyOrMethodOrAccessor(<Declaration>node, SymbolFlags.EnumMember, SymbolFlags.EnumMemberExcludes);
18271830

1831+
case SyntaxKind.SpreadElementExpression:
18281832
case SyntaxKind.JsxSpreadAttribute:
1829-
emitFlags |= NodeFlags.HasJsxSpreadAttributes;
1833+
emitFlags |= NodeFlags.HasSpreadAttribute;
18301834
return;
18311835

18321836
case SyntaxKind.CallSignature:
@@ -2368,9 +2372,9 @@ namespace ts {
23682372
const expression = node.expression;
23692373
const expressionKind = expression.kind;
23702374

2371-
if (subtreeFlags & TransformFlags.ContainsSpreadElementExpression
2375+
if (subtreeFlags & TransformFlags.ContainsSpreadExpression
23722376
|| 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
23742378
// node.
23752379
transformFlags |= TransformFlags.AssertES6;
23762380
}
@@ -2956,9 +2960,10 @@ namespace ts {
29562960
}
29572961
break;
29582962

2963+
case SyntaxKind.SpreadExpression:
29592964
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;
29622967
break;
29632968

29642969
case SyntaxKind.SuperKeyword:
@@ -2996,13 +3001,19 @@ namespace ts {
29963001
transformFlags |= TransformFlags.ContainsLexicalThis;
29973002
}
29983003

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+
29993010
break;
30003011

30013012
case SyntaxKind.ArrayLiteralExpression:
30023013
case SyntaxKind.NewExpression:
30033014
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
30063017
// node.
30073018
transformFlags |= TransformFlags.AssertES6;
30083019
}

0 commit comments

Comments
 (0)