typescript 6.0.0-dev.20251209 → 6.0.0-dev.20251211

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 CHANGED
@@ -18,7 +18,7 @@ and limitations under the License.
18
18
 
19
19
  // src/compiler/corePublic.ts
20
20
  var versionMajorMinor = "6.0";
21
- var version = `${versionMajorMinor}.0-dev.20251209`;
21
+ var version = `${versionMajorMinor}.0-dev.20251211`;
22
22
 
23
23
  // src/compiler/core.ts
24
24
  var emptyArray = [];
@@ -14267,12 +14267,15 @@ function forEachYieldExpression(body, visitor) {
14267
14267
  function traverse(node) {
14268
14268
  switch (node.kind) {
14269
14269
  case 230 /* YieldExpression */:
14270
- visitor(node);
14270
+ const value = visitor(node);
14271
+ if (value) {
14272
+ return value;
14273
+ }
14271
14274
  const operand = node.expression;
14272
- if (operand) {
14273
- traverse(operand);
14275
+ if (!operand) {
14276
+ return;
14274
14277
  }
14275
- return;
14278
+ return traverse(operand);
14276
14279
  case 267 /* EnumDeclaration */:
14277
14280
  case 265 /* InterfaceDeclaration */:
14278
14281
  case 268 /* ModuleDeclaration */:
@@ -14281,11 +14284,10 @@ function forEachYieldExpression(body, visitor) {
14281
14284
  default:
14282
14285
  if (isFunctionLike(node)) {
14283
14286
  if (node.name && node.name.kind === 168 /* ComputedPropertyName */) {
14284
- traverse(node.name.expression);
14285
- return;
14287
+ return traverse(node.name.expression);
14286
14288
  }
14287
14289
  } else if (!isPartOfTypeNode(node)) {
14288
- forEachChild(node, traverse);
14290
+ return forEachChild(node, traverse);
14289
14291
  }
14290
14292
  }
14291
14293
  }
@@ -19129,7 +19131,7 @@ function hasContextSensitiveParameters(node) {
19129
19131
  if (node.kind !== 220 /* ArrowFunction */) {
19130
19132
  const parameter = firstOrUndefined(node.parameters);
19131
19133
  if (!(parameter && parameterIsThisKeyword(parameter))) {
19132
- return true;
19134
+ return !!(node.flags & 256 /* ContainsThis */);
19133
19135
  }
19134
19136
  }
19135
19137
  }
@@ -40023,7 +40025,7 @@ function resolveTypeReferenceDirective(typeReferenceDirectiveName, containingFil
40023
40025
  const affectingLocations = [];
40024
40026
  let features = getNodeResolutionFeatures(options);
40025
40027
  if (resolutionMode !== void 0) {
40026
- features |= 30 /* AllFeatures */;
40028
+ features |= 94 /* AllFeatures */;
40027
40029
  }
40028
40030
  const moduleResolution = getEmitModuleResolutionKind(options);
40029
40031
  if (resolutionMode === 99 /* ESNext */ && (3 /* Node16 */ <= moduleResolution && moduleResolution <= 99 /* NodeNext */)) {
@@ -40178,10 +40180,10 @@ function getNodeResolutionFeatures(options) {
40178
40180
  features = 30 /* Node16Default */;
40179
40181
  break;
40180
40182
  case 99 /* NodeNext */:
40181
- features = 30 /* NodeNextDefault */;
40183
+ features = 94 /* NodeNextDefault */;
40182
40184
  break;
40183
40185
  case 100 /* Bundler */:
40184
- features = 30 /* BundlerDefault */;
40186
+ features = 94 /* BundlerDefault */;
40185
40187
  break;
40186
40188
  }
40187
40189
  if (options.resolvePackageJsonExports) {
@@ -40764,7 +40766,7 @@ function node16ModuleNameResolver(moduleName, containingFile, compilerOptions, h
40764
40766
  }
40765
40767
  function nodeNextModuleNameResolver(moduleName, containingFile, compilerOptions, host, cache, redirectedReference, resolutionMode) {
40766
40768
  return nodeNextModuleNameResolverWorker(
40767
- 30 /* NodeNextDefault */,
40769
+ 94 /* NodeNextDefault */,
40768
40770
  moduleName,
40769
40771
  containingFile,
40770
40772
  compilerOptions,
@@ -40843,11 +40845,11 @@ function nodeModuleNameResolver(moduleName, containingFile, compilerOptions, hos
40843
40845
  } else {
40844
40846
  extensions = getResolveJsonModule(compilerOptions) ? 1 /* TypeScript */ | 2 /* JavaScript */ | 4 /* Declaration */ | 8 /* Json */ : 1 /* TypeScript */ | 2 /* JavaScript */ | 4 /* Declaration */;
40845
40847
  }
40846
- return nodeModuleNameResolverWorker(conditions ? 30 /* AllFeatures */ : 0 /* None */, moduleName, getDirectoryPath(containingFile), compilerOptions, host, cache, extensions, !!isConfigLookup, redirectedReference, conditions);
40848
+ return nodeModuleNameResolverWorker(conditions ? 94 /* AllFeatures */ : 0 /* None */, moduleName, getDirectoryPath(containingFile), compilerOptions, host, cache, extensions, !!isConfigLookup, redirectedReference, conditions);
40847
40849
  }
40848
40850
  function nodeNextJsonConfigResolver(moduleName, containingFile, host) {
40849
40851
  return nodeModuleNameResolverWorker(
40850
- 30 /* NodeNextDefault */,
40852
+ 94 /* NodeNextDefault */,
40851
40853
  moduleName,
40852
40854
  getDirectoryPath(containingFile),
40853
40855
  { moduleResolution: 99 /* NodeNext */ },
@@ -40920,7 +40922,7 @@ function nodeModuleNameResolverWorker(features, moduleName, containingDirectory,
40920
40922
  const diagnosticState = {
40921
40923
  ...state,
40922
40924
  compilerOptions: diagnosticsCompilerOptions,
40923
- features: 30 /* BundlerDefault */,
40925
+ features: 94 /* BundlerDefault */,
40924
40926
  conditions: getConditions(diagnosticsCompilerOptions),
40925
40927
  reportDiagnostic: noop
40926
40928
  };
@@ -41456,7 +41458,7 @@ function loadModuleFromExports(scope, extensions, subpath, state, cache, redirec
41456
41458
  }
41457
41459
  function loadModuleFromImports(extensions, moduleName, directory, state, cache, redirectedReference) {
41458
41460
  var _a, _b;
41459
- if (moduleName === "#" || startsWith(moduleName, "#/")) {
41461
+ if (moduleName === "#" || startsWith(moduleName, "#/") && !(state.features & 64 /* ImportsPatternRoot */)) {
41460
41462
  if (state.traceEnabled) {
41461
41463
  trace(state.host, Diagnostics.Invalid_import_specifier_0_has_no_possible_resolutions, moduleName);
41462
41464
  }
@@ -42683,6 +42685,7 @@ function createBinder() {
42683
42685
  const saveExceptionTarget = currentExceptionTarget;
42684
42686
  const saveActiveLabelList = activeLabelList;
42685
42687
  const saveHasExplicitReturn = hasExplicitReturn;
42688
+ const saveSeenThisKeyword = seenThisKeyword;
42686
42689
  const isImmediatelyInvoked = containerFlags & 16 /* IsFunctionExpression */ && !hasSyntacticModifier(node, 1024 /* Async */) && !node.asteriskToken && !!getImmediatelyInvokedFunctionExpression(node) || node.kind === 176 /* ClassStaticBlockDeclaration */;
42687
42690
  if (!isImmediatelyInvoked) {
42688
42691
  currentFlow = createFlowNode(
@@ -42702,13 +42705,17 @@ function createBinder() {
42702
42705
  currentContinueTarget = void 0;
42703
42706
  activeLabelList = void 0;
42704
42707
  hasExplicitReturn = false;
42708
+ seenThisKeyword = false;
42705
42709
  bindChildren(node);
42706
- node.flags &= ~5632 /* ReachabilityAndEmitFlags */;
42710
+ node.flags &= ~(5632 /* ReachabilityAndEmitFlags */ | 256 /* ContainsThis */);
42707
42711
  if (!(currentFlow.flags & 1 /* Unreachable */) && containerFlags & 8 /* IsFunctionLike */ && nodeIsPresent(node.body)) {
42708
42712
  node.flags |= 512 /* HasImplicitReturn */;
42709
42713
  if (hasExplicitReturn) node.flags |= 1024 /* HasExplicitReturn */;
42710
42714
  node.endFlowNode = currentFlow;
42711
42715
  }
42716
+ if (seenThisKeyword) {
42717
+ node.flags |= 256 /* ContainsThis */;
42718
+ }
42712
42719
  if (node.kind === 308 /* SourceFile */) {
42713
42720
  node.flags |= emitFlags;
42714
42721
  node.endFlowNode = currentFlow;
@@ -42729,11 +42736,14 @@ function createBinder() {
42729
42736
  currentExceptionTarget = saveExceptionTarget;
42730
42737
  activeLabelList = saveActiveLabelList;
42731
42738
  hasExplicitReturn = saveHasExplicitReturn;
42739
+ seenThisKeyword = node.kind === 220 /* ArrowFunction */ ? saveSeenThisKeyword || seenThisKeyword : saveSeenThisKeyword;
42732
42740
  } else if (containerFlags & 64 /* IsInterface */) {
42741
+ const saveSeenThisKeyword = seenThisKeyword;
42733
42742
  seenThisKeyword = false;
42734
42743
  bindChildren(node);
42735
42744
  Debug.assertNotNode(node, isIdentifier);
42736
42745
  node.flags = seenThisKeyword ? node.flags | 256 /* ContainsThis */ : node.flags & ~256 /* ContainsThis */;
42746
+ seenThisKeyword = saveSeenThisKeyword;
42737
42747
  } else {
42738
42748
  bindChildren(node);
42739
42749
  }
@@ -44213,6 +44223,9 @@ function createBinder() {
44213
44223
  }
44214
44224
  // falls through
44215
44225
  case 110 /* ThisKeyword */:
44226
+ if (node.kind === 110 /* ThisKeyword */) {
44227
+ seenThisKeyword = true;
44228
+ }
44216
44229
  if (currentFlow && (isExpression(node) || parent.kind === 305 /* ShorthandPropertyAssignment */)) {
44217
44230
  node.flowNode = currentFlow;
44218
44231
  }
@@ -45080,6 +45093,8 @@ function getContainerFlags(node) {
45080
45093
  // falls through
45081
45094
  case 177 /* Constructor */:
45082
45095
  case 263 /* FunctionDeclaration */:
45096
+ case 176 /* ClassStaticBlockDeclaration */:
45097
+ return 1 /* IsContainer */ | 4 /* IsControlFlowContainer */ | 32 /* HasLocals */ | 8 /* IsFunctionLike */;
45083
45098
  case 174 /* MethodSignature */:
45084
45099
  case 180 /* CallSignature */:
45085
45100
  case 324 /* JSDocSignature */:
@@ -45087,17 +45102,14 @@ function getContainerFlags(node) {
45087
45102
  case 185 /* FunctionType */:
45088
45103
  case 181 /* ConstructSignature */:
45089
45104
  case 186 /* ConstructorType */:
45090
- case 176 /* ClassStaticBlockDeclaration */:
45091
- return 1 /* IsContainer */ | 4 /* IsControlFlowContainer */ | 32 /* HasLocals */ | 8 /* IsFunctionLike */;
45105
+ return 1 /* IsContainer */ | 32 /* HasLocals */ | 8 /* IsFunctionLike */;
45092
45106
  case 352 /* JSDocImportTag */:
45093
- return 1 /* IsContainer */ | 4 /* IsControlFlowContainer */ | 32 /* HasLocals */;
45107
+ return 1 /* IsContainer */ | 32 /* HasLocals */;
45094
45108
  case 219 /* FunctionExpression */:
45095
45109
  case 220 /* ArrowFunction */:
45096
45110
  return 1 /* IsContainer */ | 4 /* IsControlFlowContainer */ | 32 /* HasLocals */ | 8 /* IsFunctionLike */ | 16 /* IsFunctionExpression */;
45097
45111
  case 269 /* ModuleBlock */:
45098
45112
  return 4 /* IsControlFlowContainer */;
45099
- case 173 /* PropertyDeclaration */:
45100
- return node.initializer ? 4 /* IsControlFlowContainer */ : 0;
45101
45113
  case 300 /* CatchClause */:
45102
45114
  case 249 /* ForStatement */:
45103
45115
  case 250 /* ForInStatement */:
@@ -63710,7 +63722,8 @@ function createTypeChecker(host) {
63710
63722
  const { initializer } = node;
63711
63723
  return !!initializer && isContextSensitive(initializer);
63712
63724
  }
63713
- case 295 /* JsxExpression */: {
63725
+ case 295 /* JsxExpression */:
63726
+ case 230 /* YieldExpression */: {
63714
63727
  const { expression } = node;
63715
63728
  return !!expression && isContextSensitive(expression);
63716
63729
  }
@@ -63718,7 +63731,7 @@ function createTypeChecker(host) {
63718
63731
  return false;
63719
63732
  }
63720
63733
  function isContextSensitiveFunctionLikeDeclaration(node) {
63721
- return hasContextSensitiveParameters(node) || hasContextSensitiveReturnExpression(node);
63734
+ return hasContextSensitiveParameters(node) || hasContextSensitiveReturnExpression(node) || hasContextSensitiveYieldExpression(node);
63722
63735
  }
63723
63736
  function hasContextSensitiveReturnExpression(node) {
63724
63737
  if (node.typeParameters || getEffectiveReturnTypeNode(node) || !node.body) {
@@ -63729,6 +63742,9 @@ function createTypeChecker(host) {
63729
63742
  }
63730
63743
  return !!forEachReturnStatement(node.body, (statement) => !!statement.expression && isContextSensitive(statement.expression));
63731
63744
  }
63745
+ function hasContextSensitiveYieldExpression(node) {
63746
+ return !!(getFunctionFlags(node) & 1 /* Generator */ && node.body && forEachYieldExpression(node.body, isContextSensitive));
63747
+ }
63732
63748
  function isContextSensitiveFunctionOrObjectLiteralMethod(func) {
63733
63749
  return (isFunctionExpressionOrArrowFunction(func) || isObjectLiteralMethod(func)) && isContextSensitiveFunctionLikeDeclaration(func);
63734
63750
  }
@@ -73276,11 +73292,16 @@ function createTypeChecker(host) {
73276
73292
  if (contextualType && maybeTypeOfKind(contextualType, 465829888 /* Instantiable */)) {
73277
73293
  const inferenceContext = getInferenceContext(node);
73278
73294
  if (inferenceContext && contextFlags & 1 /* Signature */ && some(inferenceContext.inferences, hasInferenceCandidatesOrDefault)) {
73279
- return instantiateInstantiableTypes(contextualType, inferenceContext.nonFixingMapper);
73295
+ const type = instantiateInstantiableTypes(contextualType, inferenceContext.nonFixingMapper);
73296
+ if (!(type.flags & 3 /* AnyOrUnknown */)) {
73297
+ return type;
73298
+ }
73280
73299
  }
73281
73300
  if (inferenceContext == null ? void 0 : inferenceContext.returnMapper) {
73282
73301
  const type = instantiateInstantiableTypes(contextualType, inferenceContext.returnMapper);
73283
- return type.flags & 1048576 /* Union */ && containsType(type.types, regularFalseType) && containsType(type.types, regularTrueType) ? filterType(type, (t) => t !== regularFalseType && t !== regularTrueType) : type;
73302
+ if (!(type.flags & 3 /* AnyOrUnknown */)) {
73303
+ return type.flags & 1048576 /* Union */ && containsType(type.types, regularFalseType) && containsType(type.types, regularTrueType) ? filterType(type, (t) => t !== regularFalseType && t !== regularTrueType) : type;
73304
+ }
73284
73305
  }
73285
73306
  }
73286
73307
  return contextualType;
package/lib/typescript.js CHANGED
@@ -2286,7 +2286,7 @@ module.exports = __toCommonJS(typescript_exports);
2286
2286
 
2287
2287
  // src/compiler/corePublic.ts
2288
2288
  var versionMajorMinor = "6.0";
2289
- var version = `${versionMajorMinor}.0-dev.20251209`;
2289
+ var version = `${versionMajorMinor}.0-dev.20251211`;
2290
2290
  var Comparison = /* @__PURE__ */ ((Comparison3) => {
2291
2291
  Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
2292
2292
  Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
@@ -17972,12 +17972,15 @@ function forEachYieldExpression(body, visitor) {
17972
17972
  function traverse(node) {
17973
17973
  switch (node.kind) {
17974
17974
  case 230 /* YieldExpression */:
17975
- visitor(node);
17975
+ const value = visitor(node);
17976
+ if (value) {
17977
+ return value;
17978
+ }
17976
17979
  const operand = node.expression;
17977
- if (operand) {
17978
- traverse(operand);
17980
+ if (!operand) {
17981
+ return;
17979
17982
  }
17980
- return;
17983
+ return traverse(operand);
17981
17984
  case 267 /* EnumDeclaration */:
17982
17985
  case 265 /* InterfaceDeclaration */:
17983
17986
  case 268 /* ModuleDeclaration */:
@@ -17986,11 +17989,10 @@ function forEachYieldExpression(body, visitor) {
17986
17989
  default:
17987
17990
  if (isFunctionLike(node)) {
17988
17991
  if (node.name && node.name.kind === 168 /* ComputedPropertyName */) {
17989
- traverse(node.name.expression);
17990
- return;
17992
+ return traverse(node.name.expression);
17991
17993
  }
17992
17994
  } else if (!isPartOfTypeNode(node)) {
17993
- forEachChild(node, traverse);
17995
+ return forEachChild(node, traverse);
17994
17996
  }
17995
17997
  }
17996
17998
  }
@@ -23137,7 +23139,7 @@ function hasContextSensitiveParameters(node) {
23137
23139
  if (node.kind !== 220 /* ArrowFunction */) {
23138
23140
  const parameter = firstOrUndefined(node.parameters);
23139
23141
  if (!(parameter && parameterIsThisKeyword(parameter))) {
23140
- return true;
23142
+ return !!(node.flags & 256 /* ContainsThis */);
23141
23143
  }
23142
23144
  }
23143
23145
  }
@@ -44381,7 +44383,7 @@ function resolveTypeReferenceDirective(typeReferenceDirectiveName, containingFil
44381
44383
  const affectingLocations = [];
44382
44384
  let features = getNodeResolutionFeatures(options);
44383
44385
  if (resolutionMode !== void 0) {
44384
- features |= 30 /* AllFeatures */;
44386
+ features |= 94 /* AllFeatures */;
44385
44387
  }
44386
44388
  const moduleResolution = getEmitModuleResolutionKind(options);
44387
44389
  if (resolutionMode === 99 /* ESNext */ && (3 /* Node16 */ <= moduleResolution && moduleResolution <= 99 /* NodeNext */)) {
@@ -44536,10 +44538,10 @@ function getNodeResolutionFeatures(options) {
44536
44538
  features = 30 /* Node16Default */;
44537
44539
  break;
44538
44540
  case 99 /* NodeNext */:
44539
- features = 30 /* NodeNextDefault */;
44541
+ features = 94 /* NodeNextDefault */;
44540
44542
  break;
44541
44543
  case 100 /* Bundler */:
44542
- features = 30 /* BundlerDefault */;
44544
+ features = 94 /* BundlerDefault */;
44543
44545
  break;
44544
44546
  }
44545
44547
  if (options.resolvePackageJsonExports) {
@@ -45139,10 +45141,11 @@ var NodeResolutionFeatures = /* @__PURE__ */ ((NodeResolutionFeatures2) => {
45139
45141
  NodeResolutionFeatures2[NodeResolutionFeatures2["SelfName"] = 4] = "SelfName";
45140
45142
  NodeResolutionFeatures2[NodeResolutionFeatures2["Exports"] = 8] = "Exports";
45141
45143
  NodeResolutionFeatures2[NodeResolutionFeatures2["ExportsPatternTrailers"] = 16] = "ExportsPatternTrailers";
45142
- NodeResolutionFeatures2[NodeResolutionFeatures2["AllFeatures"] = 30] = "AllFeatures";
45144
+ NodeResolutionFeatures2[NodeResolutionFeatures2["ImportsPatternRoot"] = 64] = "ImportsPatternRoot";
45145
+ NodeResolutionFeatures2[NodeResolutionFeatures2["AllFeatures"] = 94] = "AllFeatures";
45143
45146
  NodeResolutionFeatures2[NodeResolutionFeatures2["Node16Default"] = 30] = "Node16Default";
45144
- NodeResolutionFeatures2[NodeResolutionFeatures2["NodeNextDefault"] = 30 /* AllFeatures */] = "NodeNextDefault";
45145
- NodeResolutionFeatures2[NodeResolutionFeatures2["BundlerDefault"] = 30] = "BundlerDefault";
45147
+ NodeResolutionFeatures2[NodeResolutionFeatures2["NodeNextDefault"] = 94 /* AllFeatures */] = "NodeNextDefault";
45148
+ NodeResolutionFeatures2[NodeResolutionFeatures2["BundlerDefault"] = 94] = "BundlerDefault";
45146
45149
  NodeResolutionFeatures2[NodeResolutionFeatures2["EsmMode"] = 32] = "EsmMode";
45147
45150
  return NodeResolutionFeatures2;
45148
45151
  })(NodeResolutionFeatures || {});
@@ -45160,7 +45163,7 @@ function node16ModuleNameResolver(moduleName, containingFile, compilerOptions, h
45160
45163
  }
45161
45164
  function nodeNextModuleNameResolver(moduleName, containingFile, compilerOptions, host, cache, redirectedReference, resolutionMode) {
45162
45165
  return nodeNextModuleNameResolverWorker(
45163
- 30 /* NodeNextDefault */,
45166
+ 94 /* NodeNextDefault */,
45164
45167
  moduleName,
45165
45168
  containingFile,
45166
45169
  compilerOptions,
@@ -45239,11 +45242,11 @@ function nodeModuleNameResolver(moduleName, containingFile, compilerOptions, hos
45239
45242
  } else {
45240
45243
  extensions = getResolveJsonModule(compilerOptions) ? 1 /* TypeScript */ | 2 /* JavaScript */ | 4 /* Declaration */ | 8 /* Json */ : 1 /* TypeScript */ | 2 /* JavaScript */ | 4 /* Declaration */;
45241
45244
  }
45242
- return nodeModuleNameResolverWorker(conditions ? 30 /* AllFeatures */ : 0 /* None */, moduleName, getDirectoryPath(containingFile), compilerOptions, host, cache, extensions, !!isConfigLookup, redirectedReference, conditions);
45245
+ return nodeModuleNameResolverWorker(conditions ? 94 /* AllFeatures */ : 0 /* None */, moduleName, getDirectoryPath(containingFile), compilerOptions, host, cache, extensions, !!isConfigLookup, redirectedReference, conditions);
45243
45246
  }
45244
45247
  function nodeNextJsonConfigResolver(moduleName, containingFile, host) {
45245
45248
  return nodeModuleNameResolverWorker(
45246
- 30 /* NodeNextDefault */,
45249
+ 94 /* NodeNextDefault */,
45247
45250
  moduleName,
45248
45251
  getDirectoryPath(containingFile),
45249
45252
  { moduleResolution: 99 /* NodeNext */ },
@@ -45316,7 +45319,7 @@ function nodeModuleNameResolverWorker(features, moduleName, containingDirectory,
45316
45319
  const diagnosticState = {
45317
45320
  ...state,
45318
45321
  compilerOptions: diagnosticsCompilerOptions,
45319
- features: 30 /* BundlerDefault */,
45322
+ features: 94 /* BundlerDefault */,
45320
45323
  conditions: getConditions(diagnosticsCompilerOptions),
45321
45324
  reportDiagnostic: noop
45322
45325
  };
@@ -45966,7 +45969,7 @@ function loadModuleFromExports(scope, extensions, subpath, state, cache, redirec
45966
45969
  }
45967
45970
  function loadModuleFromImports(extensions, moduleName, directory, state, cache, redirectedReference) {
45968
45971
  var _a, _b;
45969
- if (moduleName === "#" || startsWith(moduleName, "#/")) {
45972
+ if (moduleName === "#" || startsWith(moduleName, "#/") && !(state.features & 64 /* ImportsPatternRoot */)) {
45970
45973
  if (state.traceEnabled) {
45971
45974
  trace(state.host, Diagnostics.Invalid_import_specifier_0_has_no_possible_resolutions, moduleName);
45972
45975
  }
@@ -47211,6 +47214,7 @@ function createBinder() {
47211
47214
  const saveExceptionTarget = currentExceptionTarget;
47212
47215
  const saveActiveLabelList = activeLabelList;
47213
47216
  const saveHasExplicitReturn = hasExplicitReturn;
47217
+ const saveSeenThisKeyword = seenThisKeyword;
47214
47218
  const isImmediatelyInvoked = containerFlags & 16 /* IsFunctionExpression */ && !hasSyntacticModifier(node, 1024 /* Async */) && !node.asteriskToken && !!getImmediatelyInvokedFunctionExpression(node) || node.kind === 176 /* ClassStaticBlockDeclaration */;
47215
47219
  if (!isImmediatelyInvoked) {
47216
47220
  currentFlow = createFlowNode(
@@ -47230,13 +47234,17 @@ function createBinder() {
47230
47234
  currentContinueTarget = void 0;
47231
47235
  activeLabelList = void 0;
47232
47236
  hasExplicitReturn = false;
47237
+ seenThisKeyword = false;
47233
47238
  bindChildren(node);
47234
- node.flags &= ~5632 /* ReachabilityAndEmitFlags */;
47239
+ node.flags &= ~(5632 /* ReachabilityAndEmitFlags */ | 256 /* ContainsThis */);
47235
47240
  if (!(currentFlow.flags & 1 /* Unreachable */) && containerFlags & 8 /* IsFunctionLike */ && nodeIsPresent(node.body)) {
47236
47241
  node.flags |= 512 /* HasImplicitReturn */;
47237
47242
  if (hasExplicitReturn) node.flags |= 1024 /* HasExplicitReturn */;
47238
47243
  node.endFlowNode = currentFlow;
47239
47244
  }
47245
+ if (seenThisKeyword) {
47246
+ node.flags |= 256 /* ContainsThis */;
47247
+ }
47240
47248
  if (node.kind === 308 /* SourceFile */) {
47241
47249
  node.flags |= emitFlags;
47242
47250
  node.endFlowNode = currentFlow;
@@ -47257,11 +47265,14 @@ function createBinder() {
47257
47265
  currentExceptionTarget = saveExceptionTarget;
47258
47266
  activeLabelList = saveActiveLabelList;
47259
47267
  hasExplicitReturn = saveHasExplicitReturn;
47268
+ seenThisKeyword = node.kind === 220 /* ArrowFunction */ ? saveSeenThisKeyword || seenThisKeyword : saveSeenThisKeyword;
47260
47269
  } else if (containerFlags & 64 /* IsInterface */) {
47270
+ const saveSeenThisKeyword = seenThisKeyword;
47261
47271
  seenThisKeyword = false;
47262
47272
  bindChildren(node);
47263
47273
  Debug.assertNotNode(node, isIdentifier);
47264
47274
  node.flags = seenThisKeyword ? node.flags | 256 /* ContainsThis */ : node.flags & ~256 /* ContainsThis */;
47275
+ seenThisKeyword = saveSeenThisKeyword;
47265
47276
  } else {
47266
47277
  bindChildren(node);
47267
47278
  }
@@ -48741,6 +48752,9 @@ function createBinder() {
48741
48752
  }
48742
48753
  // falls through
48743
48754
  case 110 /* ThisKeyword */:
48755
+ if (node.kind === 110 /* ThisKeyword */) {
48756
+ seenThisKeyword = true;
48757
+ }
48744
48758
  if (currentFlow && (isExpression(node) || parent2.kind === 305 /* ShorthandPropertyAssignment */)) {
48745
48759
  node.flowNode = currentFlow;
48746
48760
  }
@@ -49608,6 +49622,8 @@ function getContainerFlags(node) {
49608
49622
  // falls through
49609
49623
  case 177 /* Constructor */:
49610
49624
  case 263 /* FunctionDeclaration */:
49625
+ case 176 /* ClassStaticBlockDeclaration */:
49626
+ return 1 /* IsContainer */ | 4 /* IsControlFlowContainer */ | 32 /* HasLocals */ | 8 /* IsFunctionLike */;
49611
49627
  case 174 /* MethodSignature */:
49612
49628
  case 180 /* CallSignature */:
49613
49629
  case 324 /* JSDocSignature */:
@@ -49615,17 +49631,14 @@ function getContainerFlags(node) {
49615
49631
  case 185 /* FunctionType */:
49616
49632
  case 181 /* ConstructSignature */:
49617
49633
  case 186 /* ConstructorType */:
49618
- case 176 /* ClassStaticBlockDeclaration */:
49619
- return 1 /* IsContainer */ | 4 /* IsControlFlowContainer */ | 32 /* HasLocals */ | 8 /* IsFunctionLike */;
49634
+ return 1 /* IsContainer */ | 32 /* HasLocals */ | 8 /* IsFunctionLike */;
49620
49635
  case 352 /* JSDocImportTag */:
49621
- return 1 /* IsContainer */ | 4 /* IsControlFlowContainer */ | 32 /* HasLocals */;
49636
+ return 1 /* IsContainer */ | 32 /* HasLocals */;
49622
49637
  case 219 /* FunctionExpression */:
49623
49638
  case 220 /* ArrowFunction */:
49624
49639
  return 1 /* IsContainer */ | 4 /* IsControlFlowContainer */ | 32 /* HasLocals */ | 8 /* IsFunctionLike */ | 16 /* IsFunctionExpression */;
49625
49640
  case 269 /* ModuleBlock */:
49626
49641
  return 4 /* IsControlFlowContainer */;
49627
- case 173 /* PropertyDeclaration */:
49628
- return node.initializer ? 4 /* IsControlFlowContainer */ : 0;
49629
49642
  case 300 /* CatchClause */:
49630
49643
  case 249 /* ForStatement */:
49631
49644
  case 250 /* ForInStatement */:
@@ -68338,7 +68351,8 @@ function createTypeChecker(host) {
68338
68351
  const { initializer } = node;
68339
68352
  return !!initializer && isContextSensitive(initializer);
68340
68353
  }
68341
- case 295 /* JsxExpression */: {
68354
+ case 295 /* JsxExpression */:
68355
+ case 230 /* YieldExpression */: {
68342
68356
  const { expression } = node;
68343
68357
  return !!expression && isContextSensitive(expression);
68344
68358
  }
@@ -68346,7 +68360,7 @@ function createTypeChecker(host) {
68346
68360
  return false;
68347
68361
  }
68348
68362
  function isContextSensitiveFunctionLikeDeclaration(node) {
68349
- return hasContextSensitiveParameters(node) || hasContextSensitiveReturnExpression(node);
68363
+ return hasContextSensitiveParameters(node) || hasContextSensitiveReturnExpression(node) || hasContextSensitiveYieldExpression(node);
68350
68364
  }
68351
68365
  function hasContextSensitiveReturnExpression(node) {
68352
68366
  if (node.typeParameters || getEffectiveReturnTypeNode(node) || !node.body) {
@@ -68357,6 +68371,9 @@ function createTypeChecker(host) {
68357
68371
  }
68358
68372
  return !!forEachReturnStatement(node.body, (statement) => !!statement.expression && isContextSensitive(statement.expression));
68359
68373
  }
68374
+ function hasContextSensitiveYieldExpression(node) {
68375
+ return !!(getFunctionFlags(node) & 1 /* Generator */ && node.body && forEachYieldExpression(node.body, isContextSensitive));
68376
+ }
68360
68377
  function isContextSensitiveFunctionOrObjectLiteralMethod(func) {
68361
68378
  return (isFunctionExpressionOrArrowFunction(func) || isObjectLiteralMethod(func)) && isContextSensitiveFunctionLikeDeclaration(func);
68362
68379
  }
@@ -77904,11 +77921,16 @@ function createTypeChecker(host) {
77904
77921
  if (contextualType && maybeTypeOfKind(contextualType, 465829888 /* Instantiable */)) {
77905
77922
  const inferenceContext = getInferenceContext(node);
77906
77923
  if (inferenceContext && contextFlags & 1 /* Signature */ && some(inferenceContext.inferences, hasInferenceCandidatesOrDefault)) {
77907
- return instantiateInstantiableTypes(contextualType, inferenceContext.nonFixingMapper);
77924
+ const type = instantiateInstantiableTypes(contextualType, inferenceContext.nonFixingMapper);
77925
+ if (!(type.flags & 3 /* AnyOrUnknown */)) {
77926
+ return type;
77927
+ }
77908
77928
  }
77909
77929
  if (inferenceContext == null ? void 0 : inferenceContext.returnMapper) {
77910
77930
  const type = instantiateInstantiableTypes(contextualType, inferenceContext.returnMapper);
77911
- return type.flags & 1048576 /* Union */ && containsType(type.types, regularFalseType) && containsType(type.types, regularTrueType) ? filterType(type, (t) => t !== regularFalseType && t !== regularTrueType) : type;
77931
+ if (!(type.flags & 3 /* AnyOrUnknown */)) {
77932
+ return type.flags & 1048576 /* Union */ && containsType(type.types, regularFalseType) && containsType(type.types, regularTrueType) ? filterType(type, (t) => t !== regularFalseType && t !== regularTrueType) : type;
77933
+ }
77912
77934
  }
77913
77935
  }
77914
77936
  return contextualType;
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": "6.0.0-dev.20251209",
5
+ "version": "6.0.0-dev.20251211",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [
@@ -115,5 +115,5 @@
115
115
  "node": "20.1.0",
116
116
  "npm": "8.19.4"
117
117
  },
118
- "gitHead": "ab142be459f50e7cf1327b6ab1031074cf7d8e5e"
118
+ "gitHead": "366da34ae60b458e97c880fedf33298d6842ddd6"
119
119
  }