typescript 5.4.0-dev.20240104 → 5.4.0-dev.20240106
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 +178 -63
- package/lib/typescript.js +178 -63
- package/lib/typingsInstaller.js +1 -1
- package/package.json +2 -2
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.20240106`;
|
|
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;
|
|
@@ -147128,13 +147242,14 @@ function getPropertySymbolsFromContextualType(node, checker, contextualType, uni
|
|
|
147128
147242
|
const symbol = contextualType.getProperty(name);
|
|
147129
147243
|
return symbol ? [symbol] : emptyArray;
|
|
147130
147244
|
}
|
|
147131
|
-
const
|
|
147245
|
+
const filteredTypes = isObjectLiteralExpression(node.parent) || isJsxAttributes(node.parent) ? filter(contextualType.types, (t) => !checker.isTypeInvalidDueToUnionDiscriminant(t, node.parent)) : contextualType.types;
|
|
147246
|
+
const discriminatedPropertySymbols = mapDefined(filteredTypes, (t) => t.getProperty(name));
|
|
147132
147247
|
if (unionSymbolOk && (discriminatedPropertySymbols.length === 0 || discriminatedPropertySymbols.length === contextualType.types.length)) {
|
|
147133
147248
|
const symbol = contextualType.getProperty(name);
|
|
147134
147249
|
if (symbol)
|
|
147135
147250
|
return [symbol];
|
|
147136
147251
|
}
|
|
147137
|
-
if (
|
|
147252
|
+
if (!filteredTypes.length && !discriminatedPropertySymbols.length) {
|
|
147138
147253
|
return mapDefined(contextualType.types, (t) => t.getProperty(name));
|
|
147139
147254
|
}
|
|
147140
147255
|
return deduplicate(discriminatedPropertySymbols, equateValues);
|