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/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.20240104`;
38
+ version = `${versionMajorMinor}.0-dev.20240106`;
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 instanceExtraInitializersName;
96266
- let staticExtraInitializersName;
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 (isNamedClassElement(member) && nodeOrChildIsDecorated(
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
- staticExtraInitializersName ?? (staticExtraInitializersName = factory2.createUniqueName("_staticExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */));
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
- instanceExtraInitializersName ?? (instanceExtraInitializersName = factory2.createUniqueName("_instanceExtraInitializers", 16 /* Optimistic */ | 32 /* FileLevel */));
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 (staticExtraInitializersName && instanceExtraInitializersName && hasStaticInitializers && hasNonAmbientInstanceFields && hasStaticPrivateClassElements) {
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
- instanceExtraInitializersName,
96305
- staticExtraInitializersName,
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
- const needsUniqueClassThis = some(node.members, (member) => (isPrivateIdentifierClassElementDeclaration(member) || isAutoAccessorPropertyDeclaration(member)) && hasStaticModifier(member));
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 = visitNodes2(node.members, classElementVisitor, isClassElement);
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.instanceExtraInitializersName && !getFirstConstructorWithBody(node)) {
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.staticExtraInitializersName) {
96460
+ if (classInfo2.staticMethodExtraInitializersName) {
96433
96461
  classDefinitionStatements.push(
96434
- createLet(classInfo2.staticExtraInitializersName, factory2.createArrayLiteralExpression())
96462
+ createLet(classInfo2.staticMethodExtraInitializersName, factory2.createArrayLiteralExpression())
96435
96463
  );
96436
96464
  }
96437
- if (classInfo2.instanceExtraInitializersName) {
96465
+ if (classInfo2.instanceMethodExtraInitializersName) {
96438
96466
  classDefinitionStatements.push(
96439
- createLet(classInfo2.instanceExtraInitializersName, factory2.createArrayLiteralExpression())
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.staticExtraInitializersName) {
96496
- const runStaticInitializersHelper = emitHelpers().createRunInitializersHelper(renamedClassThis, classInfo2.staticExtraInitializersName);
96497
- const runStaticInitializersStatement = factory2.createExpressionStatement(runStaticInitializersHelper);
96498
- setSourceMapRange(runStaticInitializersStatement, node.name ?? moveRangePastDecorators(node));
96499
- leadingBlockStatements = append(leadingBlockStatements, runStaticInitializersStatement);
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.instanceExtraInitializersName && !classInfo2.hasNonAmbientInstanceFields) {
96766
+ if (some(classInfo2.pendingInstanceInitializers)) {
96731
96767
  const statements = [];
96732
96768
  statements.push(
96733
96769
  factory2.createExpressionStatement(
96734
- emitHelpers().createRunInitializersHelper(
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(), extraInitializers);
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
- extraInitializers
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
- if (classInfo)
97034
+ node = visitEachChild(node, visitor, context);
97035
+ result = node;
97036
+ if (classInfo) {
96998
97037
  classInfo.hasStaticInitializers = true;
96999
- result = visitEachChild(node, visitor, context);
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 injectPendingExpressions(expression) {
97456
- if (some(pendingExpressions)) {
97457
- if (isParenthesizedExpression(expression)) {
97458
- pendingExpressions.push(expression.expression);
97459
- expression = factory2.updateParenthesizedExpression(expression, factory2.inlineExpressions(pendingExpressions));
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
- pendingExpressions.push(expression);
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 cursorRequest = range.pos === range.end && considerEmptySpans;
138266
- const overlappingRange = nodeOverlapsWithStartEnd(current, file, range.pos, range.end);
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;
@@ -145058,13 +145172,14 @@ ${newComment.split("\n").map((c) => ` * ${c}`).join("\n")}
145058
145172
  const symbol = contextualType.getProperty(name);
145059
145173
  return symbol ? [symbol] : emptyArray;
145060
145174
  }
145061
- const discriminatedPropertySymbols = mapDefined(contextualType.types, (t) => (isObjectLiteralExpression(node.parent) || isJsxAttributes(node.parent)) && checker.isTypeInvalidDueToUnionDiscriminant(t, node.parent) ? void 0 : t.getProperty(name));
145175
+ const filteredTypes = isObjectLiteralExpression(node.parent) || isJsxAttributes(node.parent) ? filter(contextualType.types, (t) => !checker.isTypeInvalidDueToUnionDiscriminant(t, node.parent)) : contextualType.types;
145176
+ const discriminatedPropertySymbols = mapDefined(filteredTypes, (t) => t.getProperty(name));
145062
145177
  if (unionSymbolOk && (discriminatedPropertySymbols.length === 0 || discriminatedPropertySymbols.length === contextualType.types.length)) {
145063
145178
  const symbol = contextualType.getProperty(name);
145064
145179
  if (symbol)
145065
145180
  return [symbol];
145066
145181
  }
145067
- if (discriminatedPropertySymbols.length === 0) {
145182
+ if (!filteredTypes.length && !discriminatedPropertySymbols.length) {
145068
145183
  return mapDefined(contextualType.types, (t) => t.getProperty(name));
145069
145184
  }
145070
145185
  return deduplicate(discriminatedPropertySymbols, equateValues);
@@ -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.20240104`;
57
+ var version = `${versionMajorMinor}.0-dev.20240106`;
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.20240104",
5
+ "version": "5.4.0-dev.20240106",
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": "0ea57f6ca19c23e0bc690bd2706f6b6e11a97e02"
116
+ "gitHead": "01a51d2d017dd50d487835282b7e4a2a4f7300ab"
117
117
  }