Skip to content

Commit 467f252

Browse files
committed
Update LKG
1 parent 86138e3 commit 467f252

File tree

5 files changed

+200
-37
lines changed

5 files changed

+200
-37
lines changed

lib/tsc.js

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26701,15 +26701,29 @@ var ts;
2670126701
}
2670226702
return undefined;
2670326703
}
26704-
function getNonGenericSignature(type) {
26704+
function getNonGenericSignature(type, node) {
2670526705
var signatures = getSignaturesOfStructuredType(type, 0);
2670626706
if (signatures.length === 1) {
2670726707
var signature = signatures[0];
26708-
if (!signature.typeParameters) {
26708+
if (!signature.typeParameters && !isAritySmaller(signature, node)) {
2670926709
return signature;
2671026710
}
2671126711
}
2671226712
}
26713+
function isAritySmaller(signature, target) {
26714+
var targetParameterCount = 0;
26715+
for (; targetParameterCount < target.parameters.length; targetParameterCount++) {
26716+
var param = target.parameters[targetParameterCount];
26717+
if (param.initializer || param.questionToken || param.dotDotDotToken || isJSDocOptionalParameter(param)) {
26718+
break;
26719+
}
26720+
}
26721+
if (target.parameters.length && ts.parameterIsThisKeyword(target.parameters[0])) {
26722+
targetParameterCount--;
26723+
}
26724+
var sourceLength = signature.hasRestParameter ? Number.MAX_VALUE : signature.parameters.length;
26725+
return sourceLength < targetParameterCount;
26726+
}
2671326727
function isFunctionExpressionOrArrowFunction(node) {
2671426728
return node.kind === 180 || node.kind === 181;
2671526729
}
@@ -26730,13 +26744,13 @@ var ts;
2673026744
return undefined;
2673126745
}
2673226746
if (!(type.flags & 65536)) {
26733-
return getNonGenericSignature(type);
26747+
return getNonGenericSignature(type, node);
2673426748
}
2673526749
var signatureList;
2673626750
var types = type.types;
2673726751
for (var _i = 0, types_14 = types; _i < types_14.length; _i++) {
2673826752
var current = types_14[_i];
26739-
var signature = getNonGenericSignature(current);
26753+
var signature = getNonGenericSignature(current, node);
2674026754
if (signature) {
2674126755
if (!signatureList) {
2674226756
signatureList = [signature];
@@ -39406,6 +39420,7 @@ var ts;
3940639420
var enclosingFunction;
3940739421
var enclosingNonArrowFunction;
3940839422
var enclosingNonAsyncFunctionBody;
39423+
var isInConstructorWithCapturedSuper;
3940939424
var convertedLoopState;
3941039425
var enabledSubstitutions;
3941139426
return transformSourceFile;
@@ -39435,11 +39450,14 @@ var ts;
3943539450
var savedCurrentParent = currentParent;
3943639451
var savedCurrentNode = currentNode;
3943739452
var savedConvertedLoopState = convertedLoopState;
39453+
var savedIsInConstructorWithCapturedSuper = isInConstructorWithCapturedSuper;
3943839454
if (ts.nodeStartsNewLexicalEnvironment(node)) {
39455+
isInConstructorWithCapturedSuper = false;
3943939456
convertedLoopState = undefined;
3944039457
}
3944139458
onBeforeVisitNode(node);
3944239459
var visited = f(node);
39460+
isInConstructorWithCapturedSuper = savedIsInConstructorWithCapturedSuper;
3944339461
convertedLoopState = savedConvertedLoopState;
3944439462
enclosingFunction = savedEnclosingFunction;
3944539463
enclosingNonArrowFunction = savedEnclosingNonArrowFunction;
@@ -39451,16 +39469,25 @@ var ts;
3945139469
currentNode = savedCurrentNode;
3945239470
return visited;
3945339471
}
39472+
function returnCapturedThis(node) {
39473+
return ts.setOriginalNode(ts.createReturn(ts.createIdentifier("_this")), node);
39474+
}
39475+
function isReturnVoidStatementInConstructorWithCapturedSuper(node) {
39476+
return isInConstructorWithCapturedSuper && node.kind === 212 && !node.expression;
39477+
}
3945439478
function shouldCheckNode(node) {
3945539479
return (node.transformFlags & 256) !== 0 ||
3945639480
node.kind === 215 ||
3945739481
(ts.isIterationStatement(node, false) && shouldConvertIterationStatementBody(node));
3945839482
}
3945939483
function visitorWorker(node) {
39460-
if (shouldCheckNode(node)) {
39484+
if (isReturnVoidStatementInConstructorWithCapturedSuper(node)) {
39485+
return returnCapturedThis(node);
39486+
}
39487+
else if (shouldCheckNode(node)) {
3946139488
return visitJavaScript(node);
3946239489
}
39463-
else if (node.transformFlags & 512) {
39490+
else if (node.transformFlags & 512 || (isInConstructorWithCapturedSuper && !ts.isExpression(node))) {
3946439491
return ts.visitEachChild(node, visitor, context);
3946539492
}
3946639493
else {
@@ -39480,6 +39507,7 @@ var ts;
3948039507
function visitNodesInConvertedLoop(node) {
3948139508
switch (node.kind) {
3948239509
case 212:
39510+
node = isReturnVoidStatementInConstructorWithCapturedSuper(node) ? returnCapturedThis(node) : node;
3948339511
return visitReturnStatement(node);
3948439512
case 201:
3948539513
return visitVariableStatement(node);
@@ -39794,7 +39822,10 @@ var ts;
3979439822
statementOffset++;
3979539823
}
3979639824
if (constructor) {
39797-
var body = saveStateAndInvoke(constructor, function (constructor) { return ts.visitNodes(constructor.body.statements, visitor, ts.isStatement, statementOffset); });
39825+
var body = saveStateAndInvoke(constructor, function (constructor) {
39826+
isInConstructorWithCapturedSuper = superCaptureStatus === 1;
39827+
return ts.visitNodes(constructor.body.statements, visitor, ts.isStatement, statementOffset);
39828+
});
3979839829
ts.addRange(statements, body);
3979939830
}
3980039831
if (extendsClauseElement

lib/tsserver.js

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28206,15 +28206,29 @@ var ts;
2820628206
}
2820728207
return undefined;
2820828208
}
28209-
function getNonGenericSignature(type) {
28209+
function getNonGenericSignature(type, node) {
2821028210
var signatures = getSignaturesOfStructuredType(type, 0);
2821128211
if (signatures.length === 1) {
2821228212
var signature = signatures[0];
28213-
if (!signature.typeParameters) {
28213+
if (!signature.typeParameters && !isAritySmaller(signature, node)) {
2821428214
return signature;
2821528215
}
2821628216
}
2821728217
}
28218+
function isAritySmaller(signature, target) {
28219+
var targetParameterCount = 0;
28220+
for (; targetParameterCount < target.parameters.length; targetParameterCount++) {
28221+
var param = target.parameters[targetParameterCount];
28222+
if (param.initializer || param.questionToken || param.dotDotDotToken || isJSDocOptionalParameter(param)) {
28223+
break;
28224+
}
28225+
}
28226+
if (target.parameters.length && ts.parameterIsThisKeyword(target.parameters[0])) {
28227+
targetParameterCount--;
28228+
}
28229+
var sourceLength = signature.hasRestParameter ? Number.MAX_VALUE : signature.parameters.length;
28230+
return sourceLength < targetParameterCount;
28231+
}
2821828232
function isFunctionExpressionOrArrowFunction(node) {
2821928233
return node.kind === 180 || node.kind === 181;
2822028234
}
@@ -28235,13 +28249,13 @@ var ts;
2823528249
return undefined;
2823628250
}
2823728251
if (!(type.flags & 65536)) {
28238-
return getNonGenericSignature(type);
28252+
return getNonGenericSignature(type, node);
2823928253
}
2824028254
var signatureList;
2824128255
var types = type.types;
2824228256
for (var _i = 0, types_14 = types; _i < types_14.length; _i++) {
2824328257
var current = types_14[_i];
28244-
var signature = getNonGenericSignature(current);
28258+
var signature = getNonGenericSignature(current, node);
2824528259
if (signature) {
2824628260
if (!signatureList) {
2824728261
signatureList = [signature];
@@ -39525,6 +39539,7 @@ var ts;
3952539539
var enclosingFunction;
3952639540
var enclosingNonArrowFunction;
3952739541
var enclosingNonAsyncFunctionBody;
39542+
var isInConstructorWithCapturedSuper;
3952839543
var convertedLoopState;
3952939544
var enabledSubstitutions;
3953039545
return transformSourceFile;
@@ -39554,11 +39569,14 @@ var ts;
3955439569
var savedCurrentParent = currentParent;
3955539570
var savedCurrentNode = currentNode;
3955639571
var savedConvertedLoopState = convertedLoopState;
39572+
var savedIsInConstructorWithCapturedSuper = isInConstructorWithCapturedSuper;
3955739573
if (ts.nodeStartsNewLexicalEnvironment(node)) {
39574+
isInConstructorWithCapturedSuper = false;
3955839575
convertedLoopState = undefined;
3955939576
}
3956039577
onBeforeVisitNode(node);
3956139578
var visited = f(node);
39579+
isInConstructorWithCapturedSuper = savedIsInConstructorWithCapturedSuper;
3956239580
convertedLoopState = savedConvertedLoopState;
3956339581
enclosingFunction = savedEnclosingFunction;
3956439582
enclosingNonArrowFunction = savedEnclosingNonArrowFunction;
@@ -39570,16 +39588,25 @@ var ts;
3957039588
currentNode = savedCurrentNode;
3957139589
return visited;
3957239590
}
39591+
function returnCapturedThis(node) {
39592+
return ts.setOriginalNode(ts.createReturn(ts.createIdentifier("_this")), node);
39593+
}
39594+
function isReturnVoidStatementInConstructorWithCapturedSuper(node) {
39595+
return isInConstructorWithCapturedSuper && node.kind === 212 && !node.expression;
39596+
}
3957339597
function shouldCheckNode(node) {
3957439598
return (node.transformFlags & 256) !== 0 ||
3957539599
node.kind === 215 ||
3957639600
(ts.isIterationStatement(node, false) && shouldConvertIterationStatementBody(node));
3957739601
}
3957839602
function visitorWorker(node) {
39579-
if (shouldCheckNode(node)) {
39603+
if (isReturnVoidStatementInConstructorWithCapturedSuper(node)) {
39604+
return returnCapturedThis(node);
39605+
}
39606+
else if (shouldCheckNode(node)) {
3958039607
return visitJavaScript(node);
3958139608
}
39582-
else if (node.transformFlags & 512) {
39609+
else if (node.transformFlags & 512 || (isInConstructorWithCapturedSuper && !ts.isExpression(node))) {
3958339610
return ts.visitEachChild(node, visitor, context);
3958439611
}
3958539612
else {
@@ -39599,6 +39626,7 @@ var ts;
3959939626
function visitNodesInConvertedLoop(node) {
3960039627
switch (node.kind) {
3960139628
case 212:
39629+
node = isReturnVoidStatementInConstructorWithCapturedSuper(node) ? returnCapturedThis(node) : node;
3960239630
return visitReturnStatement(node);
3960339631
case 201:
3960439632
return visitVariableStatement(node);
@@ -39913,7 +39941,10 @@ var ts;
3991339941
statementOffset++;
3991439942
}
3991539943
if (constructor) {
39916-
var body = saveStateAndInvoke(constructor, function (constructor) { return ts.visitNodes(constructor.body.statements, visitor, ts.isStatement, statementOffset); });
39944+
var body = saveStateAndInvoke(constructor, function (constructor) {
39945+
isInConstructorWithCapturedSuper = superCaptureStatus === 1;
39946+
return ts.visitNodes(constructor.body.statements, visitor, ts.isStatement, statementOffset);
39947+
});
3991739948
ts.addRange(statements, body);
3991839949
}
3991939950
if (extendsClauseElement

lib/tsserverlibrary.js

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28206,15 +28206,29 @@ var ts;
2820628206
}
2820728207
return undefined;
2820828208
}
28209-
function getNonGenericSignature(type) {
28209+
function getNonGenericSignature(type, node) {
2821028210
var signatures = getSignaturesOfStructuredType(type, 0);
2821128211
if (signatures.length === 1) {
2821228212
var signature = signatures[0];
28213-
if (!signature.typeParameters) {
28213+
if (!signature.typeParameters && !isAritySmaller(signature, node)) {
2821428214
return signature;
2821528215
}
2821628216
}
2821728217
}
28218+
function isAritySmaller(signature, target) {
28219+
var targetParameterCount = 0;
28220+
for (; targetParameterCount < target.parameters.length; targetParameterCount++) {
28221+
var param = target.parameters[targetParameterCount];
28222+
if (param.initializer || param.questionToken || param.dotDotDotToken || isJSDocOptionalParameter(param)) {
28223+
break;
28224+
}
28225+
}
28226+
if (target.parameters.length && ts.parameterIsThisKeyword(target.parameters[0])) {
28227+
targetParameterCount--;
28228+
}
28229+
var sourceLength = signature.hasRestParameter ? Number.MAX_VALUE : signature.parameters.length;
28230+
return sourceLength < targetParameterCount;
28231+
}
2821828232
function isFunctionExpressionOrArrowFunction(node) {
2821928233
return node.kind === 180 || node.kind === 181;
2822028234
}
@@ -28235,13 +28249,13 @@ var ts;
2823528249
return undefined;
2823628250
}
2823728251
if (!(type.flags & 65536)) {
28238-
return getNonGenericSignature(type);
28252+
return getNonGenericSignature(type, node);
2823928253
}
2824028254
var signatureList;
2824128255
var types = type.types;
2824228256
for (var _i = 0, types_14 = types; _i < types_14.length; _i++) {
2824328257
var current = types_14[_i];
28244-
var signature = getNonGenericSignature(current);
28258+
var signature = getNonGenericSignature(current, node);
2824528259
if (signature) {
2824628260
if (!signatureList) {
2824728261
signatureList = [signature];
@@ -39525,6 +39539,7 @@ var ts;
3952539539
var enclosingFunction;
3952639540
var enclosingNonArrowFunction;
3952739541
var enclosingNonAsyncFunctionBody;
39542+
var isInConstructorWithCapturedSuper;
3952839543
var convertedLoopState;
3952939544
var enabledSubstitutions;
3953039545
return transformSourceFile;
@@ -39554,11 +39569,14 @@ var ts;
3955439569
var savedCurrentParent = currentParent;
3955539570
var savedCurrentNode = currentNode;
3955639571
var savedConvertedLoopState = convertedLoopState;
39572+
var savedIsInConstructorWithCapturedSuper = isInConstructorWithCapturedSuper;
3955739573
if (ts.nodeStartsNewLexicalEnvironment(node)) {
39574+
isInConstructorWithCapturedSuper = false;
3955839575
convertedLoopState = undefined;
3955939576
}
3956039577
onBeforeVisitNode(node);
3956139578
var visited = f(node);
39579+
isInConstructorWithCapturedSuper = savedIsInConstructorWithCapturedSuper;
3956239580
convertedLoopState = savedConvertedLoopState;
3956339581
enclosingFunction = savedEnclosingFunction;
3956439582
enclosingNonArrowFunction = savedEnclosingNonArrowFunction;
@@ -39570,16 +39588,25 @@ var ts;
3957039588
currentNode = savedCurrentNode;
3957139589
return visited;
3957239590
}
39591+
function returnCapturedThis(node) {
39592+
return ts.setOriginalNode(ts.createReturn(ts.createIdentifier("_this")), node);
39593+
}
39594+
function isReturnVoidStatementInConstructorWithCapturedSuper(node) {
39595+
return isInConstructorWithCapturedSuper && node.kind === 212 && !node.expression;
39596+
}
3957339597
function shouldCheckNode(node) {
3957439598
return (node.transformFlags & 256) !== 0 ||
3957539599
node.kind === 215 ||
3957639600
(ts.isIterationStatement(node, false) && shouldConvertIterationStatementBody(node));
3957739601
}
3957839602
function visitorWorker(node) {
39579-
if (shouldCheckNode(node)) {
39603+
if (isReturnVoidStatementInConstructorWithCapturedSuper(node)) {
39604+
return returnCapturedThis(node);
39605+
}
39606+
else if (shouldCheckNode(node)) {
3958039607
return visitJavaScript(node);
3958139608
}
39582-
else if (node.transformFlags & 512) {
39609+
else if (node.transformFlags & 512 || (isInConstructorWithCapturedSuper && !ts.isExpression(node))) {
3958339610
return ts.visitEachChild(node, visitor, context);
3958439611
}
3958539612
else {
@@ -39599,6 +39626,7 @@ var ts;
3959939626
function visitNodesInConvertedLoop(node) {
3960039627
switch (node.kind) {
3960139628
case 212:
39629+
node = isReturnVoidStatementInConstructorWithCapturedSuper(node) ? returnCapturedThis(node) : node;
3960239630
return visitReturnStatement(node);
3960339631
case 201:
3960439632
return visitVariableStatement(node);
@@ -39913,7 +39941,10 @@ var ts;
3991339941
statementOffset++;
3991439942
}
3991539943
if (constructor) {
39916-
var body = saveStateAndInvoke(constructor, function (constructor) { return ts.visitNodes(constructor.body.statements, visitor, ts.isStatement, statementOffset); });
39944+
var body = saveStateAndInvoke(constructor, function (constructor) {
39945+
isInConstructorWithCapturedSuper = superCaptureStatus === 1;
39946+
return ts.visitNodes(constructor.body.statements, visitor, ts.isStatement, statementOffset);
39947+
});
3991739948
ts.addRange(statements, body);
3991839949
}
3991939950
if (extendsClauseElement

0 commit comments

Comments
 (0)