typescript 5.4.0-dev.20240105 → 5.4.0-dev.20240107
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/tsc.js +158 -68
- package/lib/tsserver.js +175 -61
- package/lib/typescript.js +175 -61
- package/lib/typingsInstaller.js +1 -1
- package/package.json +2 -2
package/lib/tsc.js
CHANGED
|
@@ -18,7 +18,7 @@ and limitations under the License.
|
|
|
18
18
|
|
|
19
19
|
// src/compiler/corePublic.ts
|
|
20
20
|
var versionMajorMinor = "5.4";
|
|
21
|
-
var version = `${versionMajorMinor}.0-dev.
|
|
21
|
+
var version = `${versionMajorMinor}.0-dev.20240107`;
|
|
22
22
|
|
|
23
23
|
// src/compiler/core.ts
|
|
24
24
|
var emptyArray = [];
|
|
@@ -10860,17 +10860,6 @@ function isMethodOrAccessor(node) {
|
|
|
10860
10860
|
return false;
|
|
10861
10861
|
}
|
|
10862
10862
|
}
|
|
10863
|
-
function isNamedClassElement(node) {
|
|
10864
|
-
switch (node.kind) {
|
|
10865
|
-
case 174 /* MethodDeclaration */:
|
|
10866
|
-
case 177 /* GetAccessor */:
|
|
10867
|
-
case 178 /* SetAccessor */:
|
|
10868
|
-
case 172 /* PropertyDeclaration */:
|
|
10869
|
-
return true;
|
|
10870
|
-
default:
|
|
10871
|
-
return false;
|
|
10872
|
-
}
|
|
10873
|
-
}
|
|
10874
10863
|
function isModifierLike(node) {
|
|
10875
10864
|
return isModifier(node) || isDecorator(node);
|
|
10876
10865
|
}
|
|
@@ -93403,22 +93392,49 @@ function transformESDecorators(context) {
|
|
|
93403
93392
|
}
|
|
93404
93393
|
function createClassInfo(node) {
|
|
93405
93394
|
const metadataReference = factory2.createUniqueName("_metadata", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
93406
|
-
let
|
|
93407
|
-
let
|
|
93395
|
+
let instanceMethodExtraInitializersName;
|
|
93396
|
+
let staticMethodExtraInitializersName;
|
|
93408
93397
|
let hasStaticInitializers = false;
|
|
93409
93398
|
let hasNonAmbientInstanceFields = false;
|
|
93410
93399
|
let hasStaticPrivateClassElements = false;
|
|
93400
|
+
let classThis2;
|
|
93401
|
+
let pendingStaticInitializers;
|
|
93402
|
+
let pendingInstanceInitializers;
|
|
93403
|
+
if (nodeIsDecorated(
|
|
93404
|
+
/*useLegacyDecorators*/
|
|
93405
|
+
false,
|
|
93406
|
+
node
|
|
93407
|
+
)) {
|
|
93408
|
+
const needsUniqueClassThis = some(node.members, (member) => (isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member));
|
|
93409
|
+
classThis2 = factory2.createUniqueName(
|
|
93410
|
+
"_classThis",
|
|
93411
|
+
needsUniqueClassThis ? 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */ : 16 /* Optimistic */ | 32 /* FileLevel */
|
|
93412
|
+
);
|
|
93413
|
+
}
|
|
93411
93414
|
for (const member of node.members) {
|
|
93412
|
-
if (
|
|
93415
|
+
if (isMethodOrAccessor(member) && nodeOrChildIsDecorated(
|
|
93413
93416
|
/*useLegacyDecorators*/
|
|
93414
93417
|
false,
|
|
93415
93418
|
member,
|
|
93416
93419
|
node
|
|
93417
93420
|
)) {
|
|
93418
93421
|
if (hasStaticModifier(member)) {
|
|
93419
|
-
|
|
93422
|
+
if (!staticMethodExtraInitializersName) {
|
|
93423
|
+
staticMethodExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
93424
|
+
const initializer = emitHelpers().createRunInitializersHelper(classThis2 ?? factory2.createThis(), staticMethodExtraInitializersName);
|
|
93425
|
+
setSourceMapRange(initializer, node.name ?? moveRangePastDecorators(node));
|
|
93426
|
+
pendingStaticInitializers ?? (pendingStaticInitializers = []);
|
|
93427
|
+
pendingStaticInitializers.push(initializer);
|
|
93428
|
+
}
|
|
93420
93429
|
} else {
|
|
93421
|
-
|
|
93430
|
+
if (!instanceMethodExtraInitializersName) {
|
|
93431
|
+
instanceMethodExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
93432
|
+
const initializer = emitHelpers().createRunInitializersHelper(factory2.createThis(), instanceMethodExtraInitializersName);
|
|
93433
|
+
setSourceMapRange(initializer, node.name ?? moveRangePastDecorators(node));
|
|
93434
|
+
pendingInstanceInitializers ?? (pendingInstanceInitializers = []);
|
|
93435
|
+
pendingInstanceInitializers.push(initializer);
|
|
93436
|
+
}
|
|
93437
|
+
instanceMethodExtraInitializersName ?? (instanceMethodExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */));
|
|
93422
93438
|
}
|
|
93423
93439
|
}
|
|
93424
93440
|
if (isClassStaticBlockDeclaration(member)) {
|
|
@@ -93435,18 +93451,21 @@ function transformESDecorators(context) {
|
|
|
93435
93451
|
if ((isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member)) {
|
|
93436
93452
|
hasStaticPrivateClassElements = true;
|
|
93437
93453
|
}
|
|
93438
|
-
if (
|
|
93454
|
+
if (staticMethodExtraInitializersName && instanceMethodExtraInitializersName && hasStaticInitializers && hasNonAmbientInstanceFields && hasStaticPrivateClassElements) {
|
|
93439
93455
|
break;
|
|
93440
93456
|
}
|
|
93441
93457
|
}
|
|
93442
93458
|
return {
|
|
93443
93459
|
class: node,
|
|
93460
|
+
classThis: classThis2,
|
|
93444
93461
|
metadataReference,
|
|
93445
|
-
|
|
93446
|
-
|
|
93462
|
+
instanceMethodExtraInitializersName,
|
|
93463
|
+
staticMethodExtraInitializersName,
|
|
93447
93464
|
hasStaticInitializers,
|
|
93448
93465
|
hasNonAmbientInstanceFields,
|
|
93449
|
-
hasStaticPrivateClassElements
|
|
93466
|
+
hasStaticPrivateClassElements,
|
|
93467
|
+
pendingStaticInitializers,
|
|
93468
|
+
pendingInstanceInitializers
|
|
93450
93469
|
};
|
|
93451
93470
|
}
|
|
93452
93471
|
function transformClassLike(node) {
|
|
@@ -93479,11 +93498,7 @@ function transformESDecorators(context) {
|
|
|
93479
93498
|
classInfo2.classDecoratorsName = factory2.createUniqueName("_classDecorators", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
93480
93499
|
classInfo2.classDescriptorName = factory2.createUniqueName("_classDescriptor", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
93481
93500
|
classInfo2.classExtraInitializersName = factory2.createUniqueName("_classExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
93482
|
-
|
|
93483
|
-
classInfo2.classThis = factory2.createUniqueName(
|
|
93484
|
-
"_classThis",
|
|
93485
|
-
needsUniqueClassThis ? 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */ : 16 /* Optimistic */ | 32 /* FileLevel */
|
|
93486
|
-
);
|
|
93501
|
+
Debug.assertIsDefined(classInfo2.classThis);
|
|
93487
93502
|
classDefinitionStatements.push(
|
|
93488
93503
|
createLet(classInfo2.classDecoratorsName, factory2.createArrayLiteralExpression(classDecorators)),
|
|
93489
93504
|
createLet(classInfo2.classDescriptorName),
|
|
@@ -93515,7 +93530,9 @@ function transformESDecorators(context) {
|
|
|
93515
93530
|
const renamedClassThis = classInfo2.classThis ?? factory2.createThis();
|
|
93516
93531
|
enterClass(classInfo2);
|
|
93517
93532
|
leadingBlockStatements = append(leadingBlockStatements, createMetadata(classInfo2.metadataReference, classInfo2.classSuper));
|
|
93518
|
-
let members =
|
|
93533
|
+
let members = node.members;
|
|
93534
|
+
members = visitNodes2(members, (node2) => isConstructorDeclaration(node2) ? node2 : classElementVisitor(node2), isClassElement);
|
|
93535
|
+
members = visitNodes2(members, (node2) => isConstructorDeclaration(node2) ? classElementVisitor(node2) : node2, isClassElement);
|
|
93519
93536
|
if (pendingExpressions) {
|
|
93520
93537
|
let outerThis;
|
|
93521
93538
|
for (let expression of pendingExpressions) {
|
|
@@ -93540,7 +93557,7 @@ function transformESDecorators(context) {
|
|
|
93540
93557
|
pendingExpressions = void 0;
|
|
93541
93558
|
}
|
|
93542
93559
|
exitClass();
|
|
93543
|
-
if (classInfo2.
|
|
93560
|
+
if (some(classInfo2.pendingInstanceInitializers) && !getFirstConstructorWithBody(node)) {
|
|
93544
93561
|
const initializerStatements = prepareConstructor(node, classInfo2);
|
|
93545
93562
|
if (initializerStatements) {
|
|
93546
93563
|
const extendsClauseElement = getEffectiveBaseTypeNode(node);
|
|
@@ -93570,14 +93587,14 @@ function transformESDecorators(context) {
|
|
|
93570
93587
|
);
|
|
93571
93588
|
}
|
|
93572
93589
|
}
|
|
93573
|
-
if (classInfo2.
|
|
93590
|
+
if (classInfo2.staticMethodExtraInitializersName) {
|
|
93574
93591
|
classDefinitionStatements.push(
|
|
93575
|
-
createLet(classInfo2.
|
|
93592
|
+
createLet(classInfo2.staticMethodExtraInitializersName, factory2.createArrayLiteralExpression())
|
|
93576
93593
|
);
|
|
93577
93594
|
}
|
|
93578
|
-
if (classInfo2.
|
|
93595
|
+
if (classInfo2.instanceMethodExtraInitializersName) {
|
|
93579
93596
|
classDefinitionStatements.push(
|
|
93580
|
-
createLet(classInfo2.
|
|
93597
|
+
createLet(classInfo2.instanceMethodExtraInitializersName, factory2.createArrayLiteralExpression())
|
|
93581
93598
|
);
|
|
93582
93599
|
}
|
|
93583
93600
|
if (classInfo2.memberInfos) {
|
|
@@ -93587,6 +93604,9 @@ function transformESDecorators(context) {
|
|
|
93587
93604
|
if (memberInfo.memberInitializersName) {
|
|
93588
93605
|
classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression()));
|
|
93589
93606
|
}
|
|
93607
|
+
if (memberInfo.memberExtraInitializersName) {
|
|
93608
|
+
classDefinitionStatements.push(createLet(memberInfo.memberExtraInitializersName, factory2.createArrayLiteralExpression()));
|
|
93609
|
+
}
|
|
93590
93610
|
if (memberInfo.memberDescriptorName) {
|
|
93591
93611
|
classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName));
|
|
93592
93612
|
}
|
|
@@ -93600,6 +93620,9 @@ function transformESDecorators(context) {
|
|
|
93600
93620
|
if (memberInfo.memberInitializersName) {
|
|
93601
93621
|
classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression()));
|
|
93602
93622
|
}
|
|
93623
|
+
if (memberInfo.memberExtraInitializersName) {
|
|
93624
|
+
classDefinitionStatements.push(createLet(memberInfo.memberExtraInitializersName, factory2.createArrayLiteralExpression()));
|
|
93625
|
+
}
|
|
93603
93626
|
if (memberInfo.memberDescriptorName) {
|
|
93604
93627
|
classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName));
|
|
93605
93628
|
}
|
|
@@ -93633,11 +93656,13 @@ function transformESDecorators(context) {
|
|
|
93633
93656
|
leadingBlockStatements.push(factory2.createExpressionStatement(classReferenceAssignment));
|
|
93634
93657
|
}
|
|
93635
93658
|
leadingBlockStatements.push(createSymbolMetadata(renamedClassThis, classInfo2.metadataReference));
|
|
93636
|
-
if (classInfo2.
|
|
93637
|
-
const
|
|
93638
|
-
|
|
93639
|
-
|
|
93640
|
-
|
|
93659
|
+
if (some(classInfo2.pendingStaticInitializers)) {
|
|
93660
|
+
for (const initializer of classInfo2.pendingStaticInitializers) {
|
|
93661
|
+
const initializerStatement = factory2.createExpressionStatement(initializer);
|
|
93662
|
+
setSourceMapRange(initializerStatement, getSourceMapRange(initializer));
|
|
93663
|
+
trailingBlockStatements = append(trailingBlockStatements, initializerStatement);
|
|
93664
|
+
}
|
|
93665
|
+
classInfo2.pendingStaticInitializers = void 0;
|
|
93641
93666
|
}
|
|
93642
93667
|
if (classInfo2.classExtraInitializersName) {
|
|
93643
93668
|
const runClassInitializersHelper = emitHelpers().createRunInitializersHelper(renamedClassThis, classInfo2.classExtraInitializersName);
|
|
@@ -93868,16 +93893,14 @@ function transformESDecorators(context) {
|
|
|
93868
93893
|
}
|
|
93869
93894
|
}
|
|
93870
93895
|
function prepareConstructor(_parent, classInfo2) {
|
|
93871
|
-
if (classInfo2.
|
|
93896
|
+
if (some(classInfo2.pendingInstanceInitializers)) {
|
|
93872
93897
|
const statements = [];
|
|
93873
93898
|
statements.push(
|
|
93874
93899
|
factory2.createExpressionStatement(
|
|
93875
|
-
|
|
93876
|
-
factory2.createThis(),
|
|
93877
|
-
classInfo2.instanceExtraInitializersName
|
|
93878
|
-
)
|
|
93900
|
+
factory2.inlineExpressions(classInfo2.pendingInstanceInitializers)
|
|
93879
93901
|
)
|
|
93880
93902
|
);
|
|
93903
|
+
classInfo2.pendingInstanceInitializers = void 0;
|
|
93881
93904
|
return statements;
|
|
93882
93905
|
}
|
|
93883
93906
|
}
|
|
@@ -93957,6 +93980,7 @@ function transformESDecorators(context) {
|
|
|
93957
93980
|
let referencedName;
|
|
93958
93981
|
let name;
|
|
93959
93982
|
let initializersName;
|
|
93983
|
+
let extraInitializersName;
|
|
93960
93984
|
let thisArg;
|
|
93961
93985
|
let descriptorName;
|
|
93962
93986
|
if (!classInfo2) {
|
|
@@ -94014,20 +94038,22 @@ function transformESDecorators(context) {
|
|
|
94014
94038
|
},
|
|
94015
94039
|
metadata: classInfo2.metadataReference
|
|
94016
94040
|
};
|
|
94017
|
-
const extraInitializers = isStatic(member) ? classInfo2.staticExtraInitializersName ?? (classInfo2.staticExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */)) : classInfo2.instanceExtraInitializersName ?? (classInfo2.instanceExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */));
|
|
94018
94041
|
if (isMethodOrAccessor(member)) {
|
|
94042
|
+
const methodExtraInitializersName = isStatic(member) ? classInfo2.staticMethodExtraInitializersName : classInfo2.instanceMethodExtraInitializersName;
|
|
94043
|
+
Debug.assertIsDefined(methodExtraInitializersName);
|
|
94019
94044
|
let descriptor;
|
|
94020
94045
|
if (isPrivateIdentifierClassElementDeclaration(member) && createDescriptor) {
|
|
94021
94046
|
descriptor = createDescriptor(member, visitNodes2(modifiers, (node) => tryCast(node, isAsyncModifier), isModifier));
|
|
94022
94047
|
memberInfo.memberDescriptorName = descriptorName = createHelperVariable(member, "descriptor");
|
|
94023
94048
|
descriptor = factory2.createAssignment(descriptorName, descriptor);
|
|
94024
94049
|
}
|
|
94025
|
-
const esDecorateExpression = emitHelpers().createESDecorateHelper(factory2.createThis(), descriptor ?? factory2.createNull(), memberDecoratorsName, context2, factory2.createNull(),
|
|
94050
|
+
const esDecorateExpression = emitHelpers().createESDecorateHelper(factory2.createThis(), descriptor ?? factory2.createNull(), memberDecoratorsName, context2, factory2.createNull(), methodExtraInitializersName);
|
|
94026
94051
|
const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression);
|
|
94027
94052
|
setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member));
|
|
94028
94053
|
statements.push(esDecorateStatement);
|
|
94029
94054
|
} else if (isPropertyDeclaration(member)) {
|
|
94030
94055
|
initializersName = memberInfo.memberInitializersName ?? (memberInfo.memberInitializersName = createHelperVariable(member, "initializers"));
|
|
94056
|
+
extraInitializersName = memberInfo.memberExtraInitializersName ?? (memberInfo.memberExtraInitializersName = createHelperVariable(member, "extraInitializers"));
|
|
94031
94057
|
if (isStatic(member)) {
|
|
94032
94058
|
thisArg = classInfo2.classThis;
|
|
94033
94059
|
}
|
|
@@ -94047,7 +94073,7 @@ function transformESDecorators(context) {
|
|
|
94047
94073
|
memberDecoratorsName,
|
|
94048
94074
|
context2,
|
|
94049
94075
|
initializersName,
|
|
94050
|
-
|
|
94076
|
+
extraInitializersName
|
|
94051
94077
|
);
|
|
94052
94078
|
const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression);
|
|
94053
94079
|
setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member));
|
|
@@ -94062,7 +94088,7 @@ function transformESDecorators(context) {
|
|
|
94062
94088
|
if (!some(modifiers) && (isMethodDeclaration(member) || isPropertyDeclaration(member))) {
|
|
94063
94089
|
setEmitFlags(name, 1024 /* NoLeadingComments */);
|
|
94064
94090
|
}
|
|
94065
|
-
return { modifiers, referencedName, name, initializersName, descriptorName, thisArg };
|
|
94091
|
+
return { modifiers, referencedName, name, initializersName, extraInitializersName, descriptorName, thisArg };
|
|
94066
94092
|
}
|
|
94067
94093
|
function visitMethodDeclaration(node) {
|
|
94068
94094
|
enterClassElement(node);
|
|
@@ -94135,9 +94161,27 @@ function transformESDecorators(context) {
|
|
|
94135
94161
|
result = visitEachChild(node, visitor, context);
|
|
94136
94162
|
classThis = savedClassThis;
|
|
94137
94163
|
} else {
|
|
94138
|
-
|
|
94164
|
+
node = visitEachChild(node, visitor, context);
|
|
94165
|
+
result = node;
|
|
94166
|
+
if (classInfo) {
|
|
94139
94167
|
classInfo.hasStaticInitializers = true;
|
|
94140
|
-
|
|
94168
|
+
if (some(classInfo.pendingStaticInitializers)) {
|
|
94169
|
+
const statements = [];
|
|
94170
|
+
for (const initializer of classInfo.pendingStaticInitializers) {
|
|
94171
|
+
const initializerStatement = factory2.createExpressionStatement(initializer);
|
|
94172
|
+
setSourceMapRange(initializerStatement, getSourceMapRange(initializer));
|
|
94173
|
+
statements.push(initializerStatement);
|
|
94174
|
+
}
|
|
94175
|
+
const body = factory2.createBlock(
|
|
94176
|
+
statements,
|
|
94177
|
+
/*multiLine*/
|
|
94178
|
+
true
|
|
94179
|
+
);
|
|
94180
|
+
const staticBlock = factory2.createClassStaticBlockDeclaration(body);
|
|
94181
|
+
result = [staticBlock, result];
|
|
94182
|
+
classInfo.pendingStaticInitializers = void 0;
|
|
94183
|
+
}
|
|
94184
|
+
}
|
|
94141
94185
|
}
|
|
94142
94186
|
exitClassElement();
|
|
94143
94187
|
return result;
|
|
@@ -94148,7 +94192,7 @@ function transformESDecorators(context) {
|
|
|
94148
94192
|
}
|
|
94149
94193
|
enterClassElement(node);
|
|
94150
94194
|
Debug.assert(!isAmbientPropertyDeclaration(node), "Not yet implemented.");
|
|
94151
|
-
const { modifiers, name, initializersName, descriptorName, thisArg } = partialTransformClassElement(node, classInfo, hasAccessorModifier(node) ? createAccessorPropertyDescriptorObject : void 0);
|
|
94195
|
+
const { modifiers, name, initializersName, extraInitializersName, descriptorName, thisArg } = partialTransformClassElement(node, classInfo, hasAccessorModifier(node) ? createAccessorPropertyDescriptorObject : void 0);
|
|
94152
94196
|
startLexicalEnvironment();
|
|
94153
94197
|
let initializer = visitNode(node.initializer, visitor, isExpression);
|
|
94154
94198
|
if (initializersName) {
|
|
@@ -94158,17 +94202,6 @@ function transformESDecorators(context) {
|
|
|
94158
94202
|
initializer ?? factory2.createVoidZero()
|
|
94159
94203
|
);
|
|
94160
94204
|
}
|
|
94161
|
-
if (!isStatic(node) && (classInfo == null ? void 0 : classInfo.instanceExtraInitializersName) && !(classInfo == null ? void 0 : classInfo.hasInjectedInstanceInitializers)) {
|
|
94162
|
-
classInfo.hasInjectedInstanceInitializers = true;
|
|
94163
|
-
initializer ?? (initializer = factory2.createVoidZero());
|
|
94164
|
-
initializer = factory2.createParenthesizedExpression(factory2.createComma(
|
|
94165
|
-
emitHelpers().createRunInitializersHelper(
|
|
94166
|
-
factory2.createThis(),
|
|
94167
|
-
classInfo.instanceExtraInitializersName
|
|
94168
|
-
),
|
|
94169
|
-
initializer
|
|
94170
|
-
));
|
|
94171
|
-
}
|
|
94172
94205
|
if (isStatic(node) && classInfo && initializer) {
|
|
94173
94206
|
classInfo.hasStaticInitializers = true;
|
|
94174
94207
|
}
|
|
@@ -94179,6 +94212,41 @@ function transformESDecorators(context) {
|
|
|
94179
94212
|
factory2.createReturnStatement(initializer)
|
|
94180
94213
|
]);
|
|
94181
94214
|
}
|
|
94215
|
+
if (classInfo) {
|
|
94216
|
+
if (isStatic(node)) {
|
|
94217
|
+
initializer = injectPendingInitializers(
|
|
94218
|
+
classInfo,
|
|
94219
|
+
/*isStatic*/
|
|
94220
|
+
true,
|
|
94221
|
+
initializer
|
|
94222
|
+
);
|
|
94223
|
+
if (extraInitializersName) {
|
|
94224
|
+
classInfo.pendingStaticInitializers ?? (classInfo.pendingStaticInitializers = []);
|
|
94225
|
+
classInfo.pendingStaticInitializers.push(
|
|
94226
|
+
emitHelpers().createRunInitializersHelper(
|
|
94227
|
+
classInfo.classThis ?? factory2.createThis(),
|
|
94228
|
+
extraInitializersName
|
|
94229
|
+
)
|
|
94230
|
+
);
|
|
94231
|
+
}
|
|
94232
|
+
} else {
|
|
94233
|
+
initializer = injectPendingInitializers(
|
|
94234
|
+
classInfo,
|
|
94235
|
+
/*isStatic*/
|
|
94236
|
+
false,
|
|
94237
|
+
initializer
|
|
94238
|
+
);
|
|
94239
|
+
if (extraInitializersName) {
|
|
94240
|
+
classInfo.pendingInstanceInitializers ?? (classInfo.pendingInstanceInitializers = []);
|
|
94241
|
+
classInfo.pendingInstanceInitializers.push(
|
|
94242
|
+
emitHelpers().createRunInitializersHelper(
|
|
94243
|
+
factory2.createThis(),
|
|
94244
|
+
extraInitializersName
|
|
94245
|
+
)
|
|
94246
|
+
);
|
|
94247
|
+
}
|
|
94248
|
+
}
|
|
94249
|
+
}
|
|
94182
94250
|
exitClassElement();
|
|
94183
94251
|
if (hasAccessorModifier(node) && descriptorName) {
|
|
94184
94252
|
const commentRange = getCommentRange(node);
|
|
@@ -94593,19 +94661,41 @@ function transformESDecorators(context) {
|
|
|
94593
94661
|
const expression = visitNode(node.expression, visitorFunc, isExpression);
|
|
94594
94662
|
return factory2.updatePartiallyEmittedExpression(node, expression);
|
|
94595
94663
|
}
|
|
94596
|
-
function
|
|
94597
|
-
if (some(
|
|
94598
|
-
if (
|
|
94599
|
-
|
|
94600
|
-
|
|
94664
|
+
function injectPendingExpressionsCommon(pendingExpressions2, expression) {
|
|
94665
|
+
if (some(pendingExpressions2)) {
|
|
94666
|
+
if (expression) {
|
|
94667
|
+
if (isParenthesizedExpression(expression)) {
|
|
94668
|
+
pendingExpressions2.push(expression.expression);
|
|
94669
|
+
expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions(pendingExpressions2));
|
|
94670
|
+
} else {
|
|
94671
|
+
pendingExpressions2.push(expression);
|
|
94672
|
+
expression = factory2.inlineExpressions(pendingExpressions2);
|
|
94673
|
+
}
|
|
94601
94674
|
} else {
|
|
94602
|
-
|
|
94603
|
-
expression = factory2.inlineExpressions(pendingExpressions);
|
|
94675
|
+
expression = factory2.inlineExpressions(pendingExpressions2);
|
|
94604
94676
|
}
|
|
94605
|
-
pendingExpressions = void 0;
|
|
94606
94677
|
}
|
|
94607
94678
|
return expression;
|
|
94608
94679
|
}
|
|
94680
|
+
function injectPendingExpressions(expression) {
|
|
94681
|
+
const result = injectPendingExpressionsCommon(pendingExpressions, expression);
|
|
94682
|
+
Debug.assertIsDefined(result);
|
|
94683
|
+
if (result !== expression) {
|
|
94684
|
+
pendingExpressions = void 0;
|
|
94685
|
+
}
|
|
94686
|
+
return result;
|
|
94687
|
+
}
|
|
94688
|
+
function injectPendingInitializers(classInfo2, isStatic2, expression) {
|
|
94689
|
+
const result = injectPendingExpressionsCommon(isStatic2 ? classInfo2.pendingStaticInitializers : classInfo2.pendingInstanceInitializers, expression);
|
|
94690
|
+
if (result !== expression) {
|
|
94691
|
+
if (isStatic2) {
|
|
94692
|
+
classInfo2.pendingStaticInitializers = void 0;
|
|
94693
|
+
} else {
|
|
94694
|
+
classInfo2.pendingInstanceInitializers = void 0;
|
|
94695
|
+
}
|
|
94696
|
+
}
|
|
94697
|
+
return result;
|
|
94698
|
+
}
|
|
94609
94699
|
function transformAllDecoratorsOfDeclaration(allDecorators) {
|
|
94610
94700
|
if (!allDecorators) {
|
|
94611
94701
|
return void 0;
|
package/lib/tsserver.js
CHANGED
|
@@ -2341,7 +2341,7 @@ module.exports = __toCommonJS(server_exports);
|
|
|
2341
2341
|
|
|
2342
2342
|
// src/compiler/corePublic.ts
|
|
2343
2343
|
var versionMajorMinor = "5.4";
|
|
2344
|
-
var version = `${versionMajorMinor}.0-dev.
|
|
2344
|
+
var version = `${versionMajorMinor}.0-dev.20240107`;
|
|
2345
2345
|
var Comparison = /* @__PURE__ */ ((Comparison3) => {
|
|
2346
2346
|
Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
|
|
2347
2347
|
Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
|
|
@@ -98302,22 +98302,49 @@ function transformESDecorators(context) {
|
|
|
98302
98302
|
}
|
|
98303
98303
|
function createClassInfo(node) {
|
|
98304
98304
|
const metadataReference = factory2.createUniqueName("_metadata", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
98305
|
-
let
|
|
98306
|
-
let
|
|
98305
|
+
let instanceMethodExtraInitializersName;
|
|
98306
|
+
let staticMethodExtraInitializersName;
|
|
98307
98307
|
let hasStaticInitializers = false;
|
|
98308
98308
|
let hasNonAmbientInstanceFields = false;
|
|
98309
98309
|
let hasStaticPrivateClassElements = false;
|
|
98310
|
+
let classThis2;
|
|
98311
|
+
let pendingStaticInitializers;
|
|
98312
|
+
let pendingInstanceInitializers;
|
|
98313
|
+
if (nodeIsDecorated(
|
|
98314
|
+
/*useLegacyDecorators*/
|
|
98315
|
+
false,
|
|
98316
|
+
node
|
|
98317
|
+
)) {
|
|
98318
|
+
const needsUniqueClassThis = some(node.members, (member) => (isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member));
|
|
98319
|
+
classThis2 = factory2.createUniqueName(
|
|
98320
|
+
"_classThis",
|
|
98321
|
+
needsUniqueClassThis ? 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */ : 16 /* Optimistic */ | 32 /* FileLevel */
|
|
98322
|
+
);
|
|
98323
|
+
}
|
|
98310
98324
|
for (const member of node.members) {
|
|
98311
|
-
if (
|
|
98325
|
+
if (isMethodOrAccessor(member) && nodeOrChildIsDecorated(
|
|
98312
98326
|
/*useLegacyDecorators*/
|
|
98313
98327
|
false,
|
|
98314
98328
|
member,
|
|
98315
98329
|
node
|
|
98316
98330
|
)) {
|
|
98317
98331
|
if (hasStaticModifier(member)) {
|
|
98318
|
-
|
|
98332
|
+
if (!staticMethodExtraInitializersName) {
|
|
98333
|
+
staticMethodExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
98334
|
+
const initializer = emitHelpers().createRunInitializersHelper(classThis2 ?? factory2.createThis(), staticMethodExtraInitializersName);
|
|
98335
|
+
setSourceMapRange(initializer, node.name ?? moveRangePastDecorators(node));
|
|
98336
|
+
pendingStaticInitializers ?? (pendingStaticInitializers = []);
|
|
98337
|
+
pendingStaticInitializers.push(initializer);
|
|
98338
|
+
}
|
|
98319
98339
|
} else {
|
|
98320
|
-
|
|
98340
|
+
if (!instanceMethodExtraInitializersName) {
|
|
98341
|
+
instanceMethodExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
98342
|
+
const initializer = emitHelpers().createRunInitializersHelper(factory2.createThis(), instanceMethodExtraInitializersName);
|
|
98343
|
+
setSourceMapRange(initializer, node.name ?? moveRangePastDecorators(node));
|
|
98344
|
+
pendingInstanceInitializers ?? (pendingInstanceInitializers = []);
|
|
98345
|
+
pendingInstanceInitializers.push(initializer);
|
|
98346
|
+
}
|
|
98347
|
+
instanceMethodExtraInitializersName ?? (instanceMethodExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */));
|
|
98321
98348
|
}
|
|
98322
98349
|
}
|
|
98323
98350
|
if (isClassStaticBlockDeclaration(member)) {
|
|
@@ -98334,18 +98361,21 @@ function transformESDecorators(context) {
|
|
|
98334
98361
|
if ((isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member)) {
|
|
98335
98362
|
hasStaticPrivateClassElements = true;
|
|
98336
98363
|
}
|
|
98337
|
-
if (
|
|
98364
|
+
if (staticMethodExtraInitializersName && instanceMethodExtraInitializersName && hasStaticInitializers && hasNonAmbientInstanceFields && hasStaticPrivateClassElements) {
|
|
98338
98365
|
break;
|
|
98339
98366
|
}
|
|
98340
98367
|
}
|
|
98341
98368
|
return {
|
|
98342
98369
|
class: node,
|
|
98370
|
+
classThis: classThis2,
|
|
98343
98371
|
metadataReference,
|
|
98344
|
-
|
|
98345
|
-
|
|
98372
|
+
instanceMethodExtraInitializersName,
|
|
98373
|
+
staticMethodExtraInitializersName,
|
|
98346
98374
|
hasStaticInitializers,
|
|
98347
98375
|
hasNonAmbientInstanceFields,
|
|
98348
|
-
hasStaticPrivateClassElements
|
|
98376
|
+
hasStaticPrivateClassElements,
|
|
98377
|
+
pendingStaticInitializers,
|
|
98378
|
+
pendingInstanceInitializers
|
|
98349
98379
|
};
|
|
98350
98380
|
}
|
|
98351
98381
|
function transformClassLike(node) {
|
|
@@ -98378,11 +98408,7 @@ function transformESDecorators(context) {
|
|
|
98378
98408
|
classInfo2.classDecoratorsName = factory2.createUniqueName("_classDecorators", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
98379
98409
|
classInfo2.classDescriptorName = factory2.createUniqueName("_classDescriptor", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
98380
98410
|
classInfo2.classExtraInitializersName = factory2.createUniqueName("_classExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
98381
|
-
|
|
98382
|
-
classInfo2.classThis = factory2.createUniqueName(
|
|
98383
|
-
"_classThis",
|
|
98384
|
-
needsUniqueClassThis ? 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */ : 16 /* Optimistic */ | 32 /* FileLevel */
|
|
98385
|
-
);
|
|
98411
|
+
Debug.assertIsDefined(classInfo2.classThis);
|
|
98386
98412
|
classDefinitionStatements.push(
|
|
98387
98413
|
createLet(classInfo2.classDecoratorsName, factory2.createArrayLiteralExpression(classDecorators)),
|
|
98388
98414
|
createLet(classInfo2.classDescriptorName),
|
|
@@ -98414,7 +98440,9 @@ function transformESDecorators(context) {
|
|
|
98414
98440
|
const renamedClassThis = classInfo2.classThis ?? factory2.createThis();
|
|
98415
98441
|
enterClass(classInfo2);
|
|
98416
98442
|
leadingBlockStatements = append(leadingBlockStatements, createMetadata(classInfo2.metadataReference, classInfo2.classSuper));
|
|
98417
|
-
let members =
|
|
98443
|
+
let members = node.members;
|
|
98444
|
+
members = visitNodes2(members, (node2) => isConstructorDeclaration(node2) ? node2 : classElementVisitor(node2), isClassElement);
|
|
98445
|
+
members = visitNodes2(members, (node2) => isConstructorDeclaration(node2) ? classElementVisitor(node2) : node2, isClassElement);
|
|
98418
98446
|
if (pendingExpressions) {
|
|
98419
98447
|
let outerThis;
|
|
98420
98448
|
for (let expression of pendingExpressions) {
|
|
@@ -98439,7 +98467,7 @@ function transformESDecorators(context) {
|
|
|
98439
98467
|
pendingExpressions = void 0;
|
|
98440
98468
|
}
|
|
98441
98469
|
exitClass();
|
|
98442
|
-
if (classInfo2.
|
|
98470
|
+
if (some(classInfo2.pendingInstanceInitializers) && !getFirstConstructorWithBody(node)) {
|
|
98443
98471
|
const initializerStatements = prepareConstructor(node, classInfo2);
|
|
98444
98472
|
if (initializerStatements) {
|
|
98445
98473
|
const extendsClauseElement = getEffectiveBaseTypeNode(node);
|
|
@@ -98469,14 +98497,14 @@ function transformESDecorators(context) {
|
|
|
98469
98497
|
);
|
|
98470
98498
|
}
|
|
98471
98499
|
}
|
|
98472
|
-
if (classInfo2.
|
|
98500
|
+
if (classInfo2.staticMethodExtraInitializersName) {
|
|
98473
98501
|
classDefinitionStatements.push(
|
|
98474
|
-
createLet(classInfo2.
|
|
98502
|
+
createLet(classInfo2.staticMethodExtraInitializersName, factory2.createArrayLiteralExpression())
|
|
98475
98503
|
);
|
|
98476
98504
|
}
|
|
98477
|
-
if (classInfo2.
|
|
98505
|
+
if (classInfo2.instanceMethodExtraInitializersName) {
|
|
98478
98506
|
classDefinitionStatements.push(
|
|
98479
|
-
createLet(classInfo2.
|
|
98507
|
+
createLet(classInfo2.instanceMethodExtraInitializersName, factory2.createArrayLiteralExpression())
|
|
98480
98508
|
);
|
|
98481
98509
|
}
|
|
98482
98510
|
if (classInfo2.memberInfos) {
|
|
@@ -98486,6 +98514,9 @@ function transformESDecorators(context) {
|
|
|
98486
98514
|
if (memberInfo.memberInitializersName) {
|
|
98487
98515
|
classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression()));
|
|
98488
98516
|
}
|
|
98517
|
+
if (memberInfo.memberExtraInitializersName) {
|
|
98518
|
+
classDefinitionStatements.push(createLet(memberInfo.memberExtraInitializersName, factory2.createArrayLiteralExpression()));
|
|
98519
|
+
}
|
|
98489
98520
|
if (memberInfo.memberDescriptorName) {
|
|
98490
98521
|
classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName));
|
|
98491
98522
|
}
|
|
@@ -98499,6 +98530,9 @@ function transformESDecorators(context) {
|
|
|
98499
98530
|
if (memberInfo.memberInitializersName) {
|
|
98500
98531
|
classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression()));
|
|
98501
98532
|
}
|
|
98533
|
+
if (memberInfo.memberExtraInitializersName) {
|
|
98534
|
+
classDefinitionStatements.push(createLet(memberInfo.memberExtraInitializersName, factory2.createArrayLiteralExpression()));
|
|
98535
|
+
}
|
|
98502
98536
|
if (memberInfo.memberDescriptorName) {
|
|
98503
98537
|
classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName));
|
|
98504
98538
|
}
|
|
@@ -98532,11 +98566,13 @@ function transformESDecorators(context) {
|
|
|
98532
98566
|
leadingBlockStatements.push(factory2.createExpressionStatement(classReferenceAssignment));
|
|
98533
98567
|
}
|
|
98534
98568
|
leadingBlockStatements.push(createSymbolMetadata(renamedClassThis, classInfo2.metadataReference));
|
|
98535
|
-
if (classInfo2.
|
|
98536
|
-
const
|
|
98537
|
-
|
|
98538
|
-
|
|
98539
|
-
|
|
98569
|
+
if (some(classInfo2.pendingStaticInitializers)) {
|
|
98570
|
+
for (const initializer of classInfo2.pendingStaticInitializers) {
|
|
98571
|
+
const initializerStatement = factory2.createExpressionStatement(initializer);
|
|
98572
|
+
setSourceMapRange(initializerStatement, getSourceMapRange(initializer));
|
|
98573
|
+
trailingBlockStatements = append(trailingBlockStatements, initializerStatement);
|
|
98574
|
+
}
|
|
98575
|
+
classInfo2.pendingStaticInitializers = void 0;
|
|
98540
98576
|
}
|
|
98541
98577
|
if (classInfo2.classExtraInitializersName) {
|
|
98542
98578
|
const runClassInitializersHelper = emitHelpers().createRunInitializersHelper(renamedClassThis, classInfo2.classExtraInitializersName);
|
|
@@ -98767,16 +98803,14 @@ function transformESDecorators(context) {
|
|
|
98767
98803
|
}
|
|
98768
98804
|
}
|
|
98769
98805
|
function prepareConstructor(_parent, classInfo2) {
|
|
98770
|
-
if (classInfo2.
|
|
98806
|
+
if (some(classInfo2.pendingInstanceInitializers)) {
|
|
98771
98807
|
const statements = [];
|
|
98772
98808
|
statements.push(
|
|
98773
98809
|
factory2.createExpressionStatement(
|
|
98774
|
-
|
|
98775
|
-
factory2.createThis(),
|
|
98776
|
-
classInfo2.instanceExtraInitializersName
|
|
98777
|
-
)
|
|
98810
|
+
factory2.inlineExpressions(classInfo2.pendingInstanceInitializers)
|
|
98778
98811
|
)
|
|
98779
98812
|
);
|
|
98813
|
+
classInfo2.pendingInstanceInitializers = void 0;
|
|
98780
98814
|
return statements;
|
|
98781
98815
|
}
|
|
98782
98816
|
}
|
|
@@ -98856,6 +98890,7 @@ function transformESDecorators(context) {
|
|
|
98856
98890
|
let referencedName;
|
|
98857
98891
|
let name;
|
|
98858
98892
|
let initializersName;
|
|
98893
|
+
let extraInitializersName;
|
|
98859
98894
|
let thisArg;
|
|
98860
98895
|
let descriptorName;
|
|
98861
98896
|
if (!classInfo2) {
|
|
@@ -98913,20 +98948,22 @@ function transformESDecorators(context) {
|
|
|
98913
98948
|
},
|
|
98914
98949
|
metadata: classInfo2.metadataReference
|
|
98915
98950
|
};
|
|
98916
|
-
const extraInitializers = isStatic(member) ? classInfo2.staticExtraInitializersName ?? (classInfo2.staticExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */)) : classInfo2.instanceExtraInitializersName ?? (classInfo2.instanceExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */));
|
|
98917
98951
|
if (isMethodOrAccessor(member)) {
|
|
98952
|
+
const methodExtraInitializersName = isStatic(member) ? classInfo2.staticMethodExtraInitializersName : classInfo2.instanceMethodExtraInitializersName;
|
|
98953
|
+
Debug.assertIsDefined(methodExtraInitializersName);
|
|
98918
98954
|
let descriptor;
|
|
98919
98955
|
if (isPrivateIdentifierClassElementDeclaration(member) && createDescriptor) {
|
|
98920
98956
|
descriptor = createDescriptor(member, visitNodes2(modifiers, (node) => tryCast(node, isAsyncModifier), isModifier));
|
|
98921
98957
|
memberInfo.memberDescriptorName = descriptorName = createHelperVariable(member, "descriptor");
|
|
98922
98958
|
descriptor = factory2.createAssignment(descriptorName, descriptor);
|
|
98923
98959
|
}
|
|
98924
|
-
const esDecorateExpression = emitHelpers().createESDecorateHelper(factory2.createThis(), descriptor ?? factory2.createNull(), memberDecoratorsName, context2, factory2.createNull(),
|
|
98960
|
+
const esDecorateExpression = emitHelpers().createESDecorateHelper(factory2.createThis(), descriptor ?? factory2.createNull(), memberDecoratorsName, context2, factory2.createNull(), methodExtraInitializersName);
|
|
98925
98961
|
const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression);
|
|
98926
98962
|
setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member));
|
|
98927
98963
|
statements.push(esDecorateStatement);
|
|
98928
98964
|
} else if (isPropertyDeclaration(member)) {
|
|
98929
98965
|
initializersName = memberInfo.memberInitializersName ?? (memberInfo.memberInitializersName = createHelperVariable(member, "initializers"));
|
|
98966
|
+
extraInitializersName = memberInfo.memberExtraInitializersName ?? (memberInfo.memberExtraInitializersName = createHelperVariable(member, "extraInitializers"));
|
|
98930
98967
|
if (isStatic(member)) {
|
|
98931
98968
|
thisArg = classInfo2.classThis;
|
|
98932
98969
|
}
|
|
@@ -98946,7 +98983,7 @@ function transformESDecorators(context) {
|
|
|
98946
98983
|
memberDecoratorsName,
|
|
98947
98984
|
context2,
|
|
98948
98985
|
initializersName,
|
|
98949
|
-
|
|
98986
|
+
extraInitializersName
|
|
98950
98987
|
);
|
|
98951
98988
|
const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression);
|
|
98952
98989
|
setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member));
|
|
@@ -98961,7 +98998,7 @@ function transformESDecorators(context) {
|
|
|
98961
98998
|
if (!some(modifiers) && (isMethodDeclaration(member) || isPropertyDeclaration(member))) {
|
|
98962
98999
|
setEmitFlags(name, 1024 /* NoLeadingComments */);
|
|
98963
99000
|
}
|
|
98964
|
-
return { modifiers, referencedName, name, initializersName, descriptorName, thisArg };
|
|
99001
|
+
return { modifiers, referencedName, name, initializersName, extraInitializersName, descriptorName, thisArg };
|
|
98965
99002
|
}
|
|
98966
99003
|
function visitMethodDeclaration(node) {
|
|
98967
99004
|
enterClassElement(node);
|
|
@@ -99034,9 +99071,27 @@ function transformESDecorators(context) {
|
|
|
99034
99071
|
result = visitEachChild(node, visitor, context);
|
|
99035
99072
|
classThis = savedClassThis;
|
|
99036
99073
|
} else {
|
|
99037
|
-
|
|
99074
|
+
node = visitEachChild(node, visitor, context);
|
|
99075
|
+
result = node;
|
|
99076
|
+
if (classInfo) {
|
|
99038
99077
|
classInfo.hasStaticInitializers = true;
|
|
99039
|
-
|
|
99078
|
+
if (some(classInfo.pendingStaticInitializers)) {
|
|
99079
|
+
const statements = [];
|
|
99080
|
+
for (const initializer of classInfo.pendingStaticInitializers) {
|
|
99081
|
+
const initializerStatement = factory2.createExpressionStatement(initializer);
|
|
99082
|
+
setSourceMapRange(initializerStatement, getSourceMapRange(initializer));
|
|
99083
|
+
statements.push(initializerStatement);
|
|
99084
|
+
}
|
|
99085
|
+
const body = factory2.createBlock(
|
|
99086
|
+
statements,
|
|
99087
|
+
/*multiLine*/
|
|
99088
|
+
true
|
|
99089
|
+
);
|
|
99090
|
+
const staticBlock = factory2.createClassStaticBlockDeclaration(body);
|
|
99091
|
+
result = [staticBlock, result];
|
|
99092
|
+
classInfo.pendingStaticInitializers = void 0;
|
|
99093
|
+
}
|
|
99094
|
+
}
|
|
99040
99095
|
}
|
|
99041
99096
|
exitClassElement();
|
|
99042
99097
|
return result;
|
|
@@ -99047,7 +99102,7 @@ function transformESDecorators(context) {
|
|
|
99047
99102
|
}
|
|
99048
99103
|
enterClassElement(node);
|
|
99049
99104
|
Debug.assert(!isAmbientPropertyDeclaration(node), "Not yet implemented.");
|
|
99050
|
-
const { modifiers, name, initializersName, descriptorName, thisArg } = partialTransformClassElement(node, classInfo, hasAccessorModifier(node) ? createAccessorPropertyDescriptorObject : void 0);
|
|
99105
|
+
const { modifiers, name, initializersName, extraInitializersName, descriptorName, thisArg } = partialTransformClassElement(node, classInfo, hasAccessorModifier(node) ? createAccessorPropertyDescriptorObject : void 0);
|
|
99051
99106
|
startLexicalEnvironment();
|
|
99052
99107
|
let initializer = visitNode(node.initializer, visitor, isExpression);
|
|
99053
99108
|
if (initializersName) {
|
|
@@ -99057,17 +99112,6 @@ function transformESDecorators(context) {
|
|
|
99057
99112
|
initializer ?? factory2.createVoidZero()
|
|
99058
99113
|
);
|
|
99059
99114
|
}
|
|
99060
|
-
if (!isStatic(node) && (classInfo == null ? void 0 : classInfo.instanceExtraInitializersName) && !(classInfo == null ? void 0 : classInfo.hasInjectedInstanceInitializers)) {
|
|
99061
|
-
classInfo.hasInjectedInstanceInitializers = true;
|
|
99062
|
-
initializer ?? (initializer = factory2.createVoidZero());
|
|
99063
|
-
initializer = factory2.createParenthesizedExpression(factory2.createComma(
|
|
99064
|
-
emitHelpers().createRunInitializersHelper(
|
|
99065
|
-
factory2.createThis(),
|
|
99066
|
-
classInfo.instanceExtraInitializersName
|
|
99067
|
-
),
|
|
99068
|
-
initializer
|
|
99069
|
-
));
|
|
99070
|
-
}
|
|
99071
99115
|
if (isStatic(node) && classInfo && initializer) {
|
|
99072
99116
|
classInfo.hasStaticInitializers = true;
|
|
99073
99117
|
}
|
|
@@ -99078,6 +99122,41 @@ function transformESDecorators(context) {
|
|
|
99078
99122
|
factory2.createReturnStatement(initializer)
|
|
99079
99123
|
]);
|
|
99080
99124
|
}
|
|
99125
|
+
if (classInfo) {
|
|
99126
|
+
if (isStatic(node)) {
|
|
99127
|
+
initializer = injectPendingInitializers(
|
|
99128
|
+
classInfo,
|
|
99129
|
+
/*isStatic*/
|
|
99130
|
+
true,
|
|
99131
|
+
initializer
|
|
99132
|
+
);
|
|
99133
|
+
if (extraInitializersName) {
|
|
99134
|
+
classInfo.pendingStaticInitializers ?? (classInfo.pendingStaticInitializers = []);
|
|
99135
|
+
classInfo.pendingStaticInitializers.push(
|
|
99136
|
+
emitHelpers().createRunInitializersHelper(
|
|
99137
|
+
classInfo.classThis ?? factory2.createThis(),
|
|
99138
|
+
extraInitializersName
|
|
99139
|
+
)
|
|
99140
|
+
);
|
|
99141
|
+
}
|
|
99142
|
+
} else {
|
|
99143
|
+
initializer = injectPendingInitializers(
|
|
99144
|
+
classInfo,
|
|
99145
|
+
/*isStatic*/
|
|
99146
|
+
false,
|
|
99147
|
+
initializer
|
|
99148
|
+
);
|
|
99149
|
+
if (extraInitializersName) {
|
|
99150
|
+
classInfo.pendingInstanceInitializers ?? (classInfo.pendingInstanceInitializers = []);
|
|
99151
|
+
classInfo.pendingInstanceInitializers.push(
|
|
99152
|
+
emitHelpers().createRunInitializersHelper(
|
|
99153
|
+
factory2.createThis(),
|
|
99154
|
+
extraInitializersName
|
|
99155
|
+
)
|
|
99156
|
+
);
|
|
99157
|
+
}
|
|
99158
|
+
}
|
|
99159
|
+
}
|
|
99081
99160
|
exitClassElement();
|
|
99082
99161
|
if (hasAccessorModifier(node) && descriptorName) {
|
|
99083
99162
|
const commentRange = getCommentRange(node);
|
|
@@ -99492,19 +99571,41 @@ function transformESDecorators(context) {
|
|
|
99492
99571
|
const expression = visitNode(node.expression, visitorFunc, isExpression);
|
|
99493
99572
|
return factory2.updatePartiallyEmittedExpression(node, expression);
|
|
99494
99573
|
}
|
|
99495
|
-
function
|
|
99496
|
-
if (some(
|
|
99497
|
-
if (
|
|
99498
|
-
|
|
99499
|
-
|
|
99574
|
+
function injectPendingExpressionsCommon(pendingExpressions2, expression) {
|
|
99575
|
+
if (some(pendingExpressions2)) {
|
|
99576
|
+
if (expression) {
|
|
99577
|
+
if (isParenthesizedExpression(expression)) {
|
|
99578
|
+
pendingExpressions2.push(expression.expression);
|
|
99579
|
+
expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions(pendingExpressions2));
|
|
99580
|
+
} else {
|
|
99581
|
+
pendingExpressions2.push(expression);
|
|
99582
|
+
expression = factory2.inlineExpressions(pendingExpressions2);
|
|
99583
|
+
}
|
|
99500
99584
|
} else {
|
|
99501
|
-
|
|
99502
|
-
expression = factory2.inlineExpressions(pendingExpressions);
|
|
99585
|
+
expression = factory2.inlineExpressions(pendingExpressions2);
|
|
99503
99586
|
}
|
|
99504
|
-
pendingExpressions = void 0;
|
|
99505
99587
|
}
|
|
99506
99588
|
return expression;
|
|
99507
99589
|
}
|
|
99590
|
+
function injectPendingExpressions(expression) {
|
|
99591
|
+
const result = injectPendingExpressionsCommon(pendingExpressions, expression);
|
|
99592
|
+
Debug.assertIsDefined(result);
|
|
99593
|
+
if (result !== expression) {
|
|
99594
|
+
pendingExpressions = void 0;
|
|
99595
|
+
}
|
|
99596
|
+
return result;
|
|
99597
|
+
}
|
|
99598
|
+
function injectPendingInitializers(classInfo2, isStatic2, expression) {
|
|
99599
|
+
const result = injectPendingExpressionsCommon(isStatic2 ? classInfo2.pendingStaticInitializers : classInfo2.pendingInstanceInitializers, expression);
|
|
99600
|
+
if (result !== expression) {
|
|
99601
|
+
if (isStatic2) {
|
|
99602
|
+
classInfo2.pendingStaticInitializers = void 0;
|
|
99603
|
+
} else {
|
|
99604
|
+
classInfo2.pendingInstanceInitializers = void 0;
|
|
99605
|
+
}
|
|
99606
|
+
}
|
|
99607
|
+
return result;
|
|
99608
|
+
}
|
|
99508
99609
|
function transformAllDecoratorsOfDeclaration(allDecorators) {
|
|
99509
99610
|
if (!allDecorators) {
|
|
99510
99611
|
return void 0;
|
|
@@ -139962,11 +140063,9 @@ registerRefactor(refactorName3, {
|
|
|
139962
140063
|
function getRangeToExtract(context, considerEmptySpans = true) {
|
|
139963
140064
|
const { file, startPosition } = context;
|
|
139964
140065
|
const isJS = isSourceFileJS(file);
|
|
139965
|
-
const current = getTokenAtPosition(file, startPosition);
|
|
139966
140066
|
const range = createTextRangeFromSpan(getRefactorContextSpan(context));
|
|
139967
|
-
const
|
|
139968
|
-
const
|
|
139969
|
-
const firstType = findAncestor(current, (node) => node.parent && isTypeNode(node) && !rangeContainsSkipTrivia(range, node.parent, file) && (cursorRequest || overlappingRange));
|
|
140067
|
+
const isCursorRequest = range.pos === range.end && considerEmptySpans;
|
|
140068
|
+
const firstType = getFirstTypeAt(file, startPosition, range, isCursorRequest);
|
|
139970
140069
|
if (!firstType || !isTypeNode(firstType))
|
|
139971
140070
|
return { error: getLocaleSpecificMessage(Diagnostics.Selection_is_not_a_valid_type_node) };
|
|
139972
140071
|
const checker = context.program.getTypeChecker();
|
|
@@ -139992,6 +140091,21 @@ function getRangeToExtract(context, considerEmptySpans = true) {
|
|
|
139992
140091
|
const typeElements = flattenTypeLiteralNodeReference(checker, selection);
|
|
139993
140092
|
return { isJS, selection, enclosingNode, typeParameters, typeElements };
|
|
139994
140093
|
}
|
|
140094
|
+
function getFirstTypeAt(file, startPosition, range, isCursorRequest) {
|
|
140095
|
+
const currentNodes = [
|
|
140096
|
+
() => getTokenAtPosition(file, startPosition),
|
|
140097
|
+
() => getTouchingToken(file, startPosition, () => true)
|
|
140098
|
+
];
|
|
140099
|
+
for (const f of currentNodes) {
|
|
140100
|
+
const current = f();
|
|
140101
|
+
const overlappingRange = nodeOverlapsWithStartEnd(current, file, range.pos, range.end);
|
|
140102
|
+
const firstType = findAncestor(current, (node) => node.parent && isTypeNode(node) && !rangeContainsSkipTrivia(range, node.parent, file) && (isCursorRequest || overlappingRange));
|
|
140103
|
+
if (firstType) {
|
|
140104
|
+
return firstType;
|
|
140105
|
+
}
|
|
140106
|
+
}
|
|
140107
|
+
return void 0;
|
|
140108
|
+
}
|
|
139995
140109
|
function flattenTypeLiteralNodeReference(checker, selection) {
|
|
139996
140110
|
if (!selection)
|
|
139997
140111
|
return void 0;
|
package/lib/typescript.js
CHANGED
|
@@ -35,7 +35,7 @@ var ts = (() => {
|
|
|
35
35
|
"src/compiler/corePublic.ts"() {
|
|
36
36
|
"use strict";
|
|
37
37
|
versionMajorMinor = "5.4";
|
|
38
|
-
version = `${versionMajorMinor}.0-dev.
|
|
38
|
+
version = `${versionMajorMinor}.0-dev.20240107`;
|
|
39
39
|
Comparison = /* @__PURE__ */ ((Comparison3) => {
|
|
40
40
|
Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
|
|
41
41
|
Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
|
|
@@ -96262,22 +96262,49 @@ ${lanes.join("\n")}
|
|
|
96262
96262
|
}
|
|
96263
96263
|
function createClassInfo(node) {
|
|
96264
96264
|
const metadataReference = factory2.createUniqueName("_metadata", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
96265
|
-
let
|
|
96266
|
-
let
|
|
96265
|
+
let instanceMethodExtraInitializersName;
|
|
96266
|
+
let staticMethodExtraInitializersName;
|
|
96267
96267
|
let hasStaticInitializers = false;
|
|
96268
96268
|
let hasNonAmbientInstanceFields = false;
|
|
96269
96269
|
let hasStaticPrivateClassElements = false;
|
|
96270
|
+
let classThis2;
|
|
96271
|
+
let pendingStaticInitializers;
|
|
96272
|
+
let pendingInstanceInitializers;
|
|
96273
|
+
if (nodeIsDecorated(
|
|
96274
|
+
/*useLegacyDecorators*/
|
|
96275
|
+
false,
|
|
96276
|
+
node
|
|
96277
|
+
)) {
|
|
96278
|
+
const needsUniqueClassThis = some(node.members, (member) => (isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member));
|
|
96279
|
+
classThis2 = factory2.createUniqueName(
|
|
96280
|
+
"_classThis",
|
|
96281
|
+
needsUniqueClassThis ? 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */ : 16 /* Optimistic */ | 32 /* FileLevel */
|
|
96282
|
+
);
|
|
96283
|
+
}
|
|
96270
96284
|
for (const member of node.members) {
|
|
96271
|
-
if (
|
|
96285
|
+
if (isMethodOrAccessor(member) && nodeOrChildIsDecorated(
|
|
96272
96286
|
/*useLegacyDecorators*/
|
|
96273
96287
|
false,
|
|
96274
96288
|
member,
|
|
96275
96289
|
node
|
|
96276
96290
|
)) {
|
|
96277
96291
|
if (hasStaticModifier(member)) {
|
|
96278
|
-
|
|
96292
|
+
if (!staticMethodExtraInitializersName) {
|
|
96293
|
+
staticMethodExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
96294
|
+
const initializer = emitHelpers().createRunInitializersHelper(classThis2 ?? factory2.createThis(), staticMethodExtraInitializersName);
|
|
96295
|
+
setSourceMapRange(initializer, node.name ?? moveRangePastDecorators(node));
|
|
96296
|
+
pendingStaticInitializers ?? (pendingStaticInitializers = []);
|
|
96297
|
+
pendingStaticInitializers.push(initializer);
|
|
96298
|
+
}
|
|
96279
96299
|
} else {
|
|
96280
|
-
|
|
96300
|
+
if (!instanceMethodExtraInitializersName) {
|
|
96301
|
+
instanceMethodExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
96302
|
+
const initializer = emitHelpers().createRunInitializersHelper(factory2.createThis(), instanceMethodExtraInitializersName);
|
|
96303
|
+
setSourceMapRange(initializer, node.name ?? moveRangePastDecorators(node));
|
|
96304
|
+
pendingInstanceInitializers ?? (pendingInstanceInitializers = []);
|
|
96305
|
+
pendingInstanceInitializers.push(initializer);
|
|
96306
|
+
}
|
|
96307
|
+
instanceMethodExtraInitializersName ?? (instanceMethodExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */));
|
|
96281
96308
|
}
|
|
96282
96309
|
}
|
|
96283
96310
|
if (isClassStaticBlockDeclaration(member)) {
|
|
@@ -96294,18 +96321,21 @@ ${lanes.join("\n")}
|
|
|
96294
96321
|
if ((isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member)) {
|
|
96295
96322
|
hasStaticPrivateClassElements = true;
|
|
96296
96323
|
}
|
|
96297
|
-
if (
|
|
96324
|
+
if (staticMethodExtraInitializersName && instanceMethodExtraInitializersName && hasStaticInitializers && hasNonAmbientInstanceFields && hasStaticPrivateClassElements) {
|
|
96298
96325
|
break;
|
|
96299
96326
|
}
|
|
96300
96327
|
}
|
|
96301
96328
|
return {
|
|
96302
96329
|
class: node,
|
|
96330
|
+
classThis: classThis2,
|
|
96303
96331
|
metadataReference,
|
|
96304
|
-
|
|
96305
|
-
|
|
96332
|
+
instanceMethodExtraInitializersName,
|
|
96333
|
+
staticMethodExtraInitializersName,
|
|
96306
96334
|
hasStaticInitializers,
|
|
96307
96335
|
hasNonAmbientInstanceFields,
|
|
96308
|
-
hasStaticPrivateClassElements
|
|
96336
|
+
hasStaticPrivateClassElements,
|
|
96337
|
+
pendingStaticInitializers,
|
|
96338
|
+
pendingInstanceInitializers
|
|
96309
96339
|
};
|
|
96310
96340
|
}
|
|
96311
96341
|
function transformClassLike(node) {
|
|
@@ -96338,11 +96368,7 @@ ${lanes.join("\n")}
|
|
|
96338
96368
|
classInfo2.classDecoratorsName = factory2.createUniqueName("_classDecorators", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
96339
96369
|
classInfo2.classDescriptorName = factory2.createUniqueName("_classDescriptor", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
96340
96370
|
classInfo2.classExtraInitializersName = factory2.createUniqueName("_classExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */);
|
|
96341
|
-
|
|
96342
|
-
classInfo2.classThis = factory2.createUniqueName(
|
|
96343
|
-
"_classThis",
|
|
96344
|
-
needsUniqueClassThis ? 16 /* Optimistic */ | 8 /* ReservedInNestedScopes */ : 16 /* Optimistic */ | 32 /* FileLevel */
|
|
96345
|
-
);
|
|
96371
|
+
Debug.assertIsDefined(classInfo2.classThis);
|
|
96346
96372
|
classDefinitionStatements.push(
|
|
96347
96373
|
createLet(classInfo2.classDecoratorsName, factory2.createArrayLiteralExpression(classDecorators)),
|
|
96348
96374
|
createLet(classInfo2.classDescriptorName),
|
|
@@ -96374,7 +96400,9 @@ ${lanes.join("\n")}
|
|
|
96374
96400
|
const renamedClassThis = classInfo2.classThis ?? factory2.createThis();
|
|
96375
96401
|
enterClass(classInfo2);
|
|
96376
96402
|
leadingBlockStatements = append(leadingBlockStatements, createMetadata(classInfo2.metadataReference, classInfo2.classSuper));
|
|
96377
|
-
let members =
|
|
96403
|
+
let members = node.members;
|
|
96404
|
+
members = visitNodes2(members, (node2) => isConstructorDeclaration(node2) ? node2 : classElementVisitor(node2), isClassElement);
|
|
96405
|
+
members = visitNodes2(members, (node2) => isConstructorDeclaration(node2) ? classElementVisitor(node2) : node2, isClassElement);
|
|
96378
96406
|
if (pendingExpressions) {
|
|
96379
96407
|
let outerThis;
|
|
96380
96408
|
for (let expression of pendingExpressions) {
|
|
@@ -96399,7 +96427,7 @@ ${lanes.join("\n")}
|
|
|
96399
96427
|
pendingExpressions = void 0;
|
|
96400
96428
|
}
|
|
96401
96429
|
exitClass();
|
|
96402
|
-
if (classInfo2.
|
|
96430
|
+
if (some(classInfo2.pendingInstanceInitializers) && !getFirstConstructorWithBody(node)) {
|
|
96403
96431
|
const initializerStatements = prepareConstructor(node, classInfo2);
|
|
96404
96432
|
if (initializerStatements) {
|
|
96405
96433
|
const extendsClauseElement = getEffectiveBaseTypeNode(node);
|
|
@@ -96429,14 +96457,14 @@ ${lanes.join("\n")}
|
|
|
96429
96457
|
);
|
|
96430
96458
|
}
|
|
96431
96459
|
}
|
|
96432
|
-
if (classInfo2.
|
|
96460
|
+
if (classInfo2.staticMethodExtraInitializersName) {
|
|
96433
96461
|
classDefinitionStatements.push(
|
|
96434
|
-
createLet(classInfo2.
|
|
96462
|
+
createLet(classInfo2.staticMethodExtraInitializersName, factory2.createArrayLiteralExpression())
|
|
96435
96463
|
);
|
|
96436
96464
|
}
|
|
96437
|
-
if (classInfo2.
|
|
96465
|
+
if (classInfo2.instanceMethodExtraInitializersName) {
|
|
96438
96466
|
classDefinitionStatements.push(
|
|
96439
|
-
createLet(classInfo2.
|
|
96467
|
+
createLet(classInfo2.instanceMethodExtraInitializersName, factory2.createArrayLiteralExpression())
|
|
96440
96468
|
);
|
|
96441
96469
|
}
|
|
96442
96470
|
if (classInfo2.memberInfos) {
|
|
@@ -96446,6 +96474,9 @@ ${lanes.join("\n")}
|
|
|
96446
96474
|
if (memberInfo.memberInitializersName) {
|
|
96447
96475
|
classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression()));
|
|
96448
96476
|
}
|
|
96477
|
+
if (memberInfo.memberExtraInitializersName) {
|
|
96478
|
+
classDefinitionStatements.push(createLet(memberInfo.memberExtraInitializersName, factory2.createArrayLiteralExpression()));
|
|
96479
|
+
}
|
|
96449
96480
|
if (memberInfo.memberDescriptorName) {
|
|
96450
96481
|
classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName));
|
|
96451
96482
|
}
|
|
@@ -96459,6 +96490,9 @@ ${lanes.join("\n")}
|
|
|
96459
96490
|
if (memberInfo.memberInitializersName) {
|
|
96460
96491
|
classDefinitionStatements.push(createLet(memberInfo.memberInitializersName, factory2.createArrayLiteralExpression()));
|
|
96461
96492
|
}
|
|
96493
|
+
if (memberInfo.memberExtraInitializersName) {
|
|
96494
|
+
classDefinitionStatements.push(createLet(memberInfo.memberExtraInitializersName, factory2.createArrayLiteralExpression()));
|
|
96495
|
+
}
|
|
96462
96496
|
if (memberInfo.memberDescriptorName) {
|
|
96463
96497
|
classDefinitionStatements.push(createLet(memberInfo.memberDescriptorName));
|
|
96464
96498
|
}
|
|
@@ -96492,11 +96526,13 @@ ${lanes.join("\n")}
|
|
|
96492
96526
|
leadingBlockStatements.push(factory2.createExpressionStatement(classReferenceAssignment));
|
|
96493
96527
|
}
|
|
96494
96528
|
leadingBlockStatements.push(createSymbolMetadata(renamedClassThis, classInfo2.metadataReference));
|
|
96495
|
-
if (classInfo2.
|
|
96496
|
-
const
|
|
96497
|
-
|
|
96498
|
-
|
|
96499
|
-
|
|
96529
|
+
if (some(classInfo2.pendingStaticInitializers)) {
|
|
96530
|
+
for (const initializer of classInfo2.pendingStaticInitializers) {
|
|
96531
|
+
const initializerStatement = factory2.createExpressionStatement(initializer);
|
|
96532
|
+
setSourceMapRange(initializerStatement, getSourceMapRange(initializer));
|
|
96533
|
+
trailingBlockStatements = append(trailingBlockStatements, initializerStatement);
|
|
96534
|
+
}
|
|
96535
|
+
classInfo2.pendingStaticInitializers = void 0;
|
|
96500
96536
|
}
|
|
96501
96537
|
if (classInfo2.classExtraInitializersName) {
|
|
96502
96538
|
const runClassInitializersHelper = emitHelpers().createRunInitializersHelper(renamedClassThis, classInfo2.classExtraInitializersName);
|
|
@@ -96727,16 +96763,14 @@ ${lanes.join("\n")}
|
|
|
96727
96763
|
}
|
|
96728
96764
|
}
|
|
96729
96765
|
function prepareConstructor(_parent, classInfo2) {
|
|
96730
|
-
if (classInfo2.
|
|
96766
|
+
if (some(classInfo2.pendingInstanceInitializers)) {
|
|
96731
96767
|
const statements = [];
|
|
96732
96768
|
statements.push(
|
|
96733
96769
|
factory2.createExpressionStatement(
|
|
96734
|
-
|
|
96735
|
-
factory2.createThis(),
|
|
96736
|
-
classInfo2.instanceExtraInitializersName
|
|
96737
|
-
)
|
|
96770
|
+
factory2.inlineExpressions(classInfo2.pendingInstanceInitializers)
|
|
96738
96771
|
)
|
|
96739
96772
|
);
|
|
96773
|
+
classInfo2.pendingInstanceInitializers = void 0;
|
|
96740
96774
|
return statements;
|
|
96741
96775
|
}
|
|
96742
96776
|
}
|
|
@@ -96816,6 +96850,7 @@ ${lanes.join("\n")}
|
|
|
96816
96850
|
let referencedName;
|
|
96817
96851
|
let name;
|
|
96818
96852
|
let initializersName;
|
|
96853
|
+
let extraInitializersName;
|
|
96819
96854
|
let thisArg;
|
|
96820
96855
|
let descriptorName;
|
|
96821
96856
|
if (!classInfo2) {
|
|
@@ -96873,20 +96908,22 @@ ${lanes.join("\n")}
|
|
|
96873
96908
|
},
|
|
96874
96909
|
metadata: classInfo2.metadataReference
|
|
96875
96910
|
};
|
|
96876
|
-
const extraInitializers = isStatic(member) ? classInfo2.staticExtraInitializersName ?? (classInfo2.staticExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */)) : classInfo2.instanceExtraInitializersName ?? (classInfo2.instanceExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */));
|
|
96877
96911
|
if (isMethodOrAccessor(member)) {
|
|
96912
|
+
const methodExtraInitializersName = isStatic(member) ? classInfo2.staticMethodExtraInitializersName : classInfo2.instanceMethodExtraInitializersName;
|
|
96913
|
+
Debug.assertIsDefined(methodExtraInitializersName);
|
|
96878
96914
|
let descriptor;
|
|
96879
96915
|
if (isPrivateIdentifierClassElementDeclaration(member) && createDescriptor) {
|
|
96880
96916
|
descriptor = createDescriptor(member, visitNodes2(modifiers, (node) => tryCast(node, isAsyncModifier), isModifier));
|
|
96881
96917
|
memberInfo.memberDescriptorName = descriptorName = createHelperVariable(member, "descriptor");
|
|
96882
96918
|
descriptor = factory2.createAssignment(descriptorName, descriptor);
|
|
96883
96919
|
}
|
|
96884
|
-
const esDecorateExpression = emitHelpers().createESDecorateHelper(factory2.createThis(), descriptor ?? factory2.createNull(), memberDecoratorsName, context2, factory2.createNull(),
|
|
96920
|
+
const esDecorateExpression = emitHelpers().createESDecorateHelper(factory2.createThis(), descriptor ?? factory2.createNull(), memberDecoratorsName, context2, factory2.createNull(), methodExtraInitializersName);
|
|
96885
96921
|
const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression);
|
|
96886
96922
|
setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member));
|
|
96887
96923
|
statements.push(esDecorateStatement);
|
|
96888
96924
|
} else if (isPropertyDeclaration(member)) {
|
|
96889
96925
|
initializersName = memberInfo.memberInitializersName ?? (memberInfo.memberInitializersName = createHelperVariable(member, "initializers"));
|
|
96926
|
+
extraInitializersName = memberInfo.memberExtraInitializersName ?? (memberInfo.memberExtraInitializersName = createHelperVariable(member, "extraInitializers"));
|
|
96890
96927
|
if (isStatic(member)) {
|
|
96891
96928
|
thisArg = classInfo2.classThis;
|
|
96892
96929
|
}
|
|
@@ -96906,7 +96943,7 @@ ${lanes.join("\n")}
|
|
|
96906
96943
|
memberDecoratorsName,
|
|
96907
96944
|
context2,
|
|
96908
96945
|
initializersName,
|
|
96909
|
-
|
|
96946
|
+
extraInitializersName
|
|
96910
96947
|
);
|
|
96911
96948
|
const esDecorateStatement = factory2.createExpressionStatement(esDecorateExpression);
|
|
96912
96949
|
setSourceMapRange(esDecorateStatement, moveRangePastDecorators(member));
|
|
@@ -96921,7 +96958,7 @@ ${lanes.join("\n")}
|
|
|
96921
96958
|
if (!some(modifiers) && (isMethodDeclaration(member) || isPropertyDeclaration(member))) {
|
|
96922
96959
|
setEmitFlags(name, 1024 /* NoLeadingComments */);
|
|
96923
96960
|
}
|
|
96924
|
-
return { modifiers, referencedName, name, initializersName, descriptorName, thisArg };
|
|
96961
|
+
return { modifiers, referencedName, name, initializersName, extraInitializersName, descriptorName, thisArg };
|
|
96925
96962
|
}
|
|
96926
96963
|
function visitMethodDeclaration(node) {
|
|
96927
96964
|
enterClassElement(node);
|
|
@@ -96994,9 +97031,27 @@ ${lanes.join("\n")}
|
|
|
96994
97031
|
result = visitEachChild(node, visitor, context);
|
|
96995
97032
|
classThis = savedClassThis;
|
|
96996
97033
|
} else {
|
|
96997
|
-
|
|
97034
|
+
node = visitEachChild(node, visitor, context);
|
|
97035
|
+
result = node;
|
|
97036
|
+
if (classInfo) {
|
|
96998
97037
|
classInfo.hasStaticInitializers = true;
|
|
96999
|
-
|
|
97038
|
+
if (some(classInfo.pendingStaticInitializers)) {
|
|
97039
|
+
const statements = [];
|
|
97040
|
+
for (const initializer of classInfo.pendingStaticInitializers) {
|
|
97041
|
+
const initializerStatement = factory2.createExpressionStatement(initializer);
|
|
97042
|
+
setSourceMapRange(initializerStatement, getSourceMapRange(initializer));
|
|
97043
|
+
statements.push(initializerStatement);
|
|
97044
|
+
}
|
|
97045
|
+
const body = factory2.createBlock(
|
|
97046
|
+
statements,
|
|
97047
|
+
/*multiLine*/
|
|
97048
|
+
true
|
|
97049
|
+
);
|
|
97050
|
+
const staticBlock = factory2.createClassStaticBlockDeclaration(body);
|
|
97051
|
+
result = [staticBlock, result];
|
|
97052
|
+
classInfo.pendingStaticInitializers = void 0;
|
|
97053
|
+
}
|
|
97054
|
+
}
|
|
97000
97055
|
}
|
|
97001
97056
|
exitClassElement();
|
|
97002
97057
|
return result;
|
|
@@ -97007,7 +97062,7 @@ ${lanes.join("\n")}
|
|
|
97007
97062
|
}
|
|
97008
97063
|
enterClassElement(node);
|
|
97009
97064
|
Debug.assert(!isAmbientPropertyDeclaration(node), "Not yet implemented.");
|
|
97010
|
-
const { modifiers, name, initializersName, descriptorName, thisArg } = partialTransformClassElement(node, classInfo, hasAccessorModifier(node) ? createAccessorPropertyDescriptorObject : void 0);
|
|
97065
|
+
const { modifiers, name, initializersName, extraInitializersName, descriptorName, thisArg } = partialTransformClassElement(node, classInfo, hasAccessorModifier(node) ? createAccessorPropertyDescriptorObject : void 0);
|
|
97011
97066
|
startLexicalEnvironment();
|
|
97012
97067
|
let initializer = visitNode(node.initializer, visitor, isExpression);
|
|
97013
97068
|
if (initializersName) {
|
|
@@ -97017,17 +97072,6 @@ ${lanes.join("\n")}
|
|
|
97017
97072
|
initializer ?? factory2.createVoidZero()
|
|
97018
97073
|
);
|
|
97019
97074
|
}
|
|
97020
|
-
if (!isStatic(node) && (classInfo == null ? void 0 : classInfo.instanceExtraInitializersName) && !(classInfo == null ? void 0 : classInfo.hasInjectedInstanceInitializers)) {
|
|
97021
|
-
classInfo.hasInjectedInstanceInitializers = true;
|
|
97022
|
-
initializer ?? (initializer = factory2.createVoidZero());
|
|
97023
|
-
initializer = factory2.createParenthesizedExpression(factory2.createComma(
|
|
97024
|
-
emitHelpers().createRunInitializersHelper(
|
|
97025
|
-
factory2.createThis(),
|
|
97026
|
-
classInfo.instanceExtraInitializersName
|
|
97027
|
-
),
|
|
97028
|
-
initializer
|
|
97029
|
-
));
|
|
97030
|
-
}
|
|
97031
97075
|
if (isStatic(node) && classInfo && initializer) {
|
|
97032
97076
|
classInfo.hasStaticInitializers = true;
|
|
97033
97077
|
}
|
|
@@ -97038,6 +97082,41 @@ ${lanes.join("\n")}
|
|
|
97038
97082
|
factory2.createReturnStatement(initializer)
|
|
97039
97083
|
]);
|
|
97040
97084
|
}
|
|
97085
|
+
if (classInfo) {
|
|
97086
|
+
if (isStatic(node)) {
|
|
97087
|
+
initializer = injectPendingInitializers(
|
|
97088
|
+
classInfo,
|
|
97089
|
+
/*isStatic*/
|
|
97090
|
+
true,
|
|
97091
|
+
initializer
|
|
97092
|
+
);
|
|
97093
|
+
if (extraInitializersName) {
|
|
97094
|
+
classInfo.pendingStaticInitializers ?? (classInfo.pendingStaticInitializers = []);
|
|
97095
|
+
classInfo.pendingStaticInitializers.push(
|
|
97096
|
+
emitHelpers().createRunInitializersHelper(
|
|
97097
|
+
classInfo.classThis ?? factory2.createThis(),
|
|
97098
|
+
extraInitializersName
|
|
97099
|
+
)
|
|
97100
|
+
);
|
|
97101
|
+
}
|
|
97102
|
+
} else {
|
|
97103
|
+
initializer = injectPendingInitializers(
|
|
97104
|
+
classInfo,
|
|
97105
|
+
/*isStatic*/
|
|
97106
|
+
false,
|
|
97107
|
+
initializer
|
|
97108
|
+
);
|
|
97109
|
+
if (extraInitializersName) {
|
|
97110
|
+
classInfo.pendingInstanceInitializers ?? (classInfo.pendingInstanceInitializers = []);
|
|
97111
|
+
classInfo.pendingInstanceInitializers.push(
|
|
97112
|
+
emitHelpers().createRunInitializersHelper(
|
|
97113
|
+
factory2.createThis(),
|
|
97114
|
+
extraInitializersName
|
|
97115
|
+
)
|
|
97116
|
+
);
|
|
97117
|
+
}
|
|
97118
|
+
}
|
|
97119
|
+
}
|
|
97041
97120
|
exitClassElement();
|
|
97042
97121
|
if (hasAccessorModifier(node) && descriptorName) {
|
|
97043
97122
|
const commentRange = getCommentRange(node);
|
|
@@ -97452,19 +97531,41 @@ ${lanes.join("\n")}
|
|
|
97452
97531
|
const expression = visitNode(node.expression, visitorFunc, isExpression);
|
|
97453
97532
|
return factory2.updatePartiallyEmittedExpression(node, expression);
|
|
97454
97533
|
}
|
|
97455
|
-
function
|
|
97456
|
-
if (some(
|
|
97457
|
-
if (
|
|
97458
|
-
|
|
97459
|
-
|
|
97534
|
+
function injectPendingExpressionsCommon(pendingExpressions2, expression) {
|
|
97535
|
+
if (some(pendingExpressions2)) {
|
|
97536
|
+
if (expression) {
|
|
97537
|
+
if (isParenthesizedExpression(expression)) {
|
|
97538
|
+
pendingExpressions2.push(expression.expression);
|
|
97539
|
+
expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions(pendingExpressions2));
|
|
97540
|
+
} else {
|
|
97541
|
+
pendingExpressions2.push(expression);
|
|
97542
|
+
expression = factory2.inlineExpressions(pendingExpressions2);
|
|
97543
|
+
}
|
|
97460
97544
|
} else {
|
|
97461
|
-
|
|
97462
|
-
expression = factory2.inlineExpressions(pendingExpressions);
|
|
97545
|
+
expression = factory2.inlineExpressions(pendingExpressions2);
|
|
97463
97546
|
}
|
|
97464
|
-
pendingExpressions = void 0;
|
|
97465
97547
|
}
|
|
97466
97548
|
return expression;
|
|
97467
97549
|
}
|
|
97550
|
+
function injectPendingExpressions(expression) {
|
|
97551
|
+
const result = injectPendingExpressionsCommon(pendingExpressions, expression);
|
|
97552
|
+
Debug.assertIsDefined(result);
|
|
97553
|
+
if (result !== expression) {
|
|
97554
|
+
pendingExpressions = void 0;
|
|
97555
|
+
}
|
|
97556
|
+
return result;
|
|
97557
|
+
}
|
|
97558
|
+
function injectPendingInitializers(classInfo2, isStatic2, expression) {
|
|
97559
|
+
const result = injectPendingExpressionsCommon(isStatic2 ? classInfo2.pendingStaticInitializers : classInfo2.pendingInstanceInitializers, expression);
|
|
97560
|
+
if (result !== expression) {
|
|
97561
|
+
if (isStatic2) {
|
|
97562
|
+
classInfo2.pendingStaticInitializers = void 0;
|
|
97563
|
+
} else {
|
|
97564
|
+
classInfo2.pendingInstanceInitializers = void 0;
|
|
97565
|
+
}
|
|
97566
|
+
}
|
|
97567
|
+
return result;
|
|
97568
|
+
}
|
|
97468
97569
|
function transformAllDecoratorsOfDeclaration(allDecorators) {
|
|
97469
97570
|
if (!allDecorators) {
|
|
97470
97571
|
return void 0;
|
|
@@ -138260,11 +138361,9 @@ ${lanes.join("\n")}
|
|
|
138260
138361
|
function getRangeToExtract(context, considerEmptySpans = true) {
|
|
138261
138362
|
const { file, startPosition } = context;
|
|
138262
138363
|
const isJS = isSourceFileJS(file);
|
|
138263
|
-
const current = getTokenAtPosition(file, startPosition);
|
|
138264
138364
|
const range = createTextRangeFromSpan(getRefactorContextSpan(context));
|
|
138265
|
-
const
|
|
138266
|
-
const
|
|
138267
|
-
const firstType = findAncestor(current, (node) => node.parent && isTypeNode(node) && !rangeContainsSkipTrivia(range, node.parent, file) && (cursorRequest || overlappingRange));
|
|
138365
|
+
const isCursorRequest = range.pos === range.end && considerEmptySpans;
|
|
138366
|
+
const firstType = getFirstTypeAt(file, startPosition, range, isCursorRequest);
|
|
138268
138367
|
if (!firstType || !isTypeNode(firstType))
|
|
138269
138368
|
return { error: getLocaleSpecificMessage(Diagnostics.Selection_is_not_a_valid_type_node) };
|
|
138270
138369
|
const checker = context.program.getTypeChecker();
|
|
@@ -138290,6 +138389,21 @@ ${lanes.join("\n")}
|
|
|
138290
138389
|
const typeElements = flattenTypeLiteralNodeReference(checker, selection);
|
|
138291
138390
|
return { isJS, selection, enclosingNode, typeParameters, typeElements };
|
|
138292
138391
|
}
|
|
138392
|
+
function getFirstTypeAt(file, startPosition, range, isCursorRequest) {
|
|
138393
|
+
const currentNodes = [
|
|
138394
|
+
() => getTokenAtPosition(file, startPosition),
|
|
138395
|
+
() => getTouchingToken(file, startPosition, () => true)
|
|
138396
|
+
];
|
|
138397
|
+
for (const f of currentNodes) {
|
|
138398
|
+
const current = f();
|
|
138399
|
+
const overlappingRange = nodeOverlapsWithStartEnd(current, file, range.pos, range.end);
|
|
138400
|
+
const firstType = findAncestor(current, (node) => node.parent && isTypeNode(node) && !rangeContainsSkipTrivia(range, node.parent, file) && (isCursorRequest || overlappingRange));
|
|
138401
|
+
if (firstType) {
|
|
138402
|
+
return firstType;
|
|
138403
|
+
}
|
|
138404
|
+
}
|
|
138405
|
+
return void 0;
|
|
138406
|
+
}
|
|
138293
138407
|
function flattenTypeLiteralNodeReference(checker, selection) {
|
|
138294
138408
|
if (!selection)
|
|
138295
138409
|
return void 0;
|
package/lib/typingsInstaller.js
CHANGED
|
@@ -54,7 +54,7 @@ var path = __toESM(require("path"));
|
|
|
54
54
|
|
|
55
55
|
// src/compiler/corePublic.ts
|
|
56
56
|
var versionMajorMinor = "5.4";
|
|
57
|
-
var version = `${versionMajorMinor}.0-dev.
|
|
57
|
+
var version = `${versionMajorMinor}.0-dev.20240107`;
|
|
58
58
|
|
|
59
59
|
// src/compiler/core.ts
|
|
60
60
|
var emptyArray = [];
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "typescript",
|
|
3
3
|
"author": "Microsoft Corp.",
|
|
4
4
|
"homepage": "https://www.typescriptlang.org/",
|
|
5
|
-
"version": "5.4.0-dev.
|
|
5
|
+
"version": "5.4.0-dev.20240107",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"description": "TypeScript is a language for application scale JavaScript development",
|
|
8
8
|
"keywords": [
|
|
@@ -113,5 +113,5 @@
|
|
|
113
113
|
"node": "20.1.0",
|
|
114
114
|
"npm": "8.19.4"
|
|
115
115
|
},
|
|
116
|
-
"gitHead": "
|
|
116
|
+
"gitHead": "01a51d2d017dd50d487835282b7e4a2a4f7300ab"
|
|
117
117
|
}
|