typescript 5.4.0-dev.20231121 → 5.4.0-dev.20231123

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 = "5.4";
21
- var version = `${versionMajorMinor}.0-dev.20231121`;
21
+ var version = `${versionMajorMinor}.0-dev.20231123`;
22
22
 
23
23
  // src/compiler/core.ts
24
24
  var emptyArray = [];
@@ -18119,7 +18119,7 @@ var nullNodeConverters = {
18119
18119
  var nextAutoGenerateId = 0;
18120
18120
  var nodeFactoryPatchers = [];
18121
18121
  function createNodeFactory(flags, baseFactory2) {
18122
- const update = flags & 8 /* NoOriginalNode */ ? updateWithoutOriginal : updateWithOriginal;
18122
+ const setOriginal = flags & 8 /* NoOriginalNode */ ? identity : setOriginalNode;
18123
18123
  const parenthesizerRules = memoize(() => flags & 1 /* NoParenthesizerRules */ ? nullParenthesizerRules : createParenthesizerRules(factory2));
18124
18124
  const converters = memoize(() => flags & 2 /* NoNodeConverters */ ? nullNodeConverters : createNodeConverters(factory2));
18125
18125
  const getBinaryCreateFunction = memoizeOne((operator) => (left, right) => createBinaryExpression(left, operator, right));
@@ -21617,7 +21617,7 @@ function createNodeFactory(flags, baseFactory2) {
21617
21617
  }
21618
21618
  function cloneSourceFile(source) {
21619
21619
  const node = source.redirectInfo ? cloneRedirectedSourceFile(source) : cloneSourceFileWorker(source);
21620
- setOriginalNode(node, source);
21620
+ setOriginal(node, source);
21621
21621
  return node;
21622
21622
  }
21623
21623
  function cloneSourceFileWithChanges(source, statements, isDeclarationFile, referencedFiles, typeReferences, hasNoDefaultLib, libReferences) {
@@ -21750,7 +21750,7 @@ function createNodeFactory(flags, baseFactory2) {
21750
21750
  const clone2 = createBaseIdentifier(node.escapedText);
21751
21751
  clone2.flags |= node.flags & ~16 /* Synthesized */;
21752
21752
  clone2.transformFlags = node.transformFlags;
21753
- setOriginalNode(clone2, node);
21753
+ setOriginal(clone2, node);
21754
21754
  setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate });
21755
21755
  return clone2;
21756
21756
  }
@@ -21761,7 +21761,7 @@ function createNodeFactory(flags, baseFactory2) {
21761
21761
  clone2.flowNode = node.flowNode;
21762
21762
  clone2.symbol = node.symbol;
21763
21763
  clone2.transformFlags = node.transformFlags;
21764
- setOriginalNode(clone2, node);
21764
+ setOriginal(clone2, node);
21765
21765
  const typeArguments = getIdentifierTypeArguments(node);
21766
21766
  if (typeArguments)
21767
21767
  setIdentifierTypeArguments(clone2, typeArguments);
@@ -21771,7 +21771,7 @@ function createNodeFactory(flags, baseFactory2) {
21771
21771
  const clone2 = createBasePrivateIdentifier(node.escapedText);
21772
21772
  clone2.flags |= node.flags & ~16 /* Synthesized */;
21773
21773
  clone2.transformFlags = node.transformFlags;
21774
- setOriginalNode(clone2, node);
21774
+ setOriginal(clone2, node);
21775
21775
  setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate });
21776
21776
  return clone2;
21777
21777
  }
@@ -21779,7 +21779,7 @@ function createNodeFactory(flags, baseFactory2) {
21779
21779
  const clone2 = createBasePrivateIdentifier(node.escapedText);
21780
21780
  clone2.flags |= node.flags & ~16 /* Synthesized */;
21781
21781
  clone2.transformFlags = node.transformFlags;
21782
- setOriginalNode(clone2, node);
21782
+ setOriginal(clone2, node);
21783
21783
  return clone2;
21784
21784
  }
21785
21785
  function cloneNode(node) {
@@ -21804,7 +21804,7 @@ function createNodeFactory(flags, baseFactory2) {
21804
21804
  const clone2 = !isNodeKind(node.kind) ? baseFactory2.createBaseTokenNode(node.kind) : baseFactory2.createBaseNode(node.kind);
21805
21805
  clone2.flags |= node.flags & ~16 /* Synthesized */;
21806
21806
  clone2.transformFlags = node.transformFlags;
21807
- setOriginalNode(clone2, node);
21807
+ setOriginal(clone2, node);
21808
21808
  for (const key in node) {
21809
21809
  if (hasProperty(clone2, key) || !hasProperty(node, key)) {
21810
21810
  continue;
@@ -22329,7 +22329,7 @@ function createNodeFactory(flags, baseFactory2) {
22329
22329
  return typeof value === "number" ? createToken(value) : value;
22330
22330
  }
22331
22331
  function asEmbeddedStatement(statement) {
22332
- return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginalNode(createEmptyStatement(), statement), statement) : statement;
22332
+ return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginal(createEmptyStatement(), statement), statement) : statement;
22333
22333
  }
22334
22334
  function asVariableDeclaration(variableDeclaration) {
22335
22335
  if (typeof variableDeclaration === "string" || variableDeclaration && !isVariableDeclaration(variableDeclaration)) {
@@ -22345,19 +22345,13 @@ function createNodeFactory(flags, baseFactory2) {
22345
22345
  }
22346
22346
  return variableDeclaration;
22347
22347
  }
22348
- }
22349
- function updateWithoutOriginal(updated, original) {
22350
- if (updated !== original) {
22351
- setTextRange(updated, original);
22352
- }
22353
- return updated;
22354
- }
22355
- function updateWithOriginal(updated, original) {
22356
- if (updated !== original) {
22357
- setOriginalNode(updated, original);
22358
- setTextRange(updated, original);
22348
+ function update(updated, original) {
22349
+ if (updated !== original) {
22350
+ setOriginal(updated, original);
22351
+ setTextRange(updated, original);
22352
+ }
22353
+ return updated;
22359
22354
  }
22360
- return updated;
22361
22355
  }
22362
22356
  function getDefaultTagNameForKind(kind) {
22363
22357
  switch (kind) {
@@ -26897,8 +26891,10 @@ var Parser;
26897
26891
  setTextRangePosWidth(sourceFile, 0, sourceText.length);
26898
26892
  setFields(sourceFile);
26899
26893
  if (!isDeclarationFile && isExternalModule(sourceFile) && sourceFile.transformFlags & 67108864 /* ContainsPossibleTopLevelAwait */) {
26894
+ const oldSourceFile = sourceFile;
26900
26895
  sourceFile = reparseTopLevelAwait(sourceFile);
26901
- setFields(sourceFile);
26896
+ if (oldSourceFile !== sourceFile)
26897
+ setFields(sourceFile);
26902
26898
  }
26903
26899
  return sourceFile;
26904
26900
  function setFields(sourceFile2) {
@@ -64834,7 +64830,8 @@ function createTypeChecker(host) {
64834
64830
  if (hasOnlyExpressionInitializer(declaration) && isBlockScopedNameDeclaredBeforeUse(declaration, node)) {
64835
64831
  const initializer = getEffectiveInitializer(declaration);
64836
64832
  if (initializer) {
64837
- return tryGetNameFromType(getTypeOfExpression(initializer));
64833
+ const initializerType = isBindingPattern(declaration.parent) ? getTypeForBindingElement(declaration) : getTypeOfExpression(initializer);
64834
+ return initializerType && tryGetNameFromType(initializerType);
64838
64835
  }
64839
64836
  if (isEnumMember(declaration)) {
64840
64837
  return getTextOfPropertyName(declaration.name);
@@ -66229,10 +66226,10 @@ function createTypeChecker(host) {
66229
66226
  if (isMatchingConstructorReference(right)) {
66230
66227
  return narrowTypeByConstructor(type, operator, left, assumeTrue);
66231
66228
  }
66232
- if (isBooleanLiteral(right)) {
66229
+ if (isBooleanLiteral(right) && !isAccessExpression(left)) {
66233
66230
  return narrowTypeByBooleanComparison(type, left, right, operator, assumeTrue);
66234
66231
  }
66235
- if (isBooleanLiteral(left)) {
66232
+ if (isBooleanLiteral(left) && !isAccessExpression(right)) {
66236
66233
  return narrowTypeByBooleanComparison(type, right, left, operator, assumeTrue);
66237
66234
  }
66238
66235
  break;
package/lib/tsserver.js CHANGED
@@ -2331,7 +2331,7 @@ module.exports = __toCommonJS(server_exports);
2331
2331
 
2332
2332
  // src/compiler/corePublic.ts
2333
2333
  var versionMajorMinor = "5.4";
2334
- var version = `${versionMajorMinor}.0-dev.20231121`;
2334
+ var version = `${versionMajorMinor}.0-dev.20231123`;
2335
2335
  var Comparison = /* @__PURE__ */ ((Comparison3) => {
2336
2336
  Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
2337
2337
  Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
@@ -22349,7 +22349,7 @@ function addNodeFactoryPatcher(fn) {
22349
22349
  nodeFactoryPatchers.push(fn);
22350
22350
  }
22351
22351
  function createNodeFactory(flags, baseFactory2) {
22352
- const update = flags & 8 /* NoOriginalNode */ ? updateWithoutOriginal : updateWithOriginal;
22352
+ const setOriginal = flags & 8 /* NoOriginalNode */ ? identity : setOriginalNode;
22353
22353
  const parenthesizerRules = memoize(() => flags & 1 /* NoParenthesizerRules */ ? nullParenthesizerRules : createParenthesizerRules(factory2));
22354
22354
  const converters = memoize(() => flags & 2 /* NoNodeConverters */ ? nullNodeConverters : createNodeConverters(factory2));
22355
22355
  const getBinaryCreateFunction = memoizeOne((operator) => (left, right) => createBinaryExpression(left, operator, right));
@@ -25847,7 +25847,7 @@ function createNodeFactory(flags, baseFactory2) {
25847
25847
  }
25848
25848
  function cloneSourceFile(source) {
25849
25849
  const node = source.redirectInfo ? cloneRedirectedSourceFile(source) : cloneSourceFileWorker(source);
25850
- setOriginalNode(node, source);
25850
+ setOriginal(node, source);
25851
25851
  return node;
25852
25852
  }
25853
25853
  function cloneSourceFileWithChanges(source, statements, isDeclarationFile, referencedFiles, typeReferences, hasNoDefaultLib, libReferences) {
@@ -25980,7 +25980,7 @@ function createNodeFactory(flags, baseFactory2) {
25980
25980
  const clone2 = createBaseIdentifier(node.escapedText);
25981
25981
  clone2.flags |= node.flags & ~16 /* Synthesized */;
25982
25982
  clone2.transformFlags = node.transformFlags;
25983
- setOriginalNode(clone2, node);
25983
+ setOriginal(clone2, node);
25984
25984
  setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate });
25985
25985
  return clone2;
25986
25986
  }
@@ -25991,7 +25991,7 @@ function createNodeFactory(flags, baseFactory2) {
25991
25991
  clone2.flowNode = node.flowNode;
25992
25992
  clone2.symbol = node.symbol;
25993
25993
  clone2.transformFlags = node.transformFlags;
25994
- setOriginalNode(clone2, node);
25994
+ setOriginal(clone2, node);
25995
25995
  const typeArguments = getIdentifierTypeArguments(node);
25996
25996
  if (typeArguments)
25997
25997
  setIdentifierTypeArguments(clone2, typeArguments);
@@ -26001,7 +26001,7 @@ function createNodeFactory(flags, baseFactory2) {
26001
26001
  const clone2 = createBasePrivateIdentifier(node.escapedText);
26002
26002
  clone2.flags |= node.flags & ~16 /* Synthesized */;
26003
26003
  clone2.transformFlags = node.transformFlags;
26004
- setOriginalNode(clone2, node);
26004
+ setOriginal(clone2, node);
26005
26005
  setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate });
26006
26006
  return clone2;
26007
26007
  }
@@ -26009,7 +26009,7 @@ function createNodeFactory(flags, baseFactory2) {
26009
26009
  const clone2 = createBasePrivateIdentifier(node.escapedText);
26010
26010
  clone2.flags |= node.flags & ~16 /* Synthesized */;
26011
26011
  clone2.transformFlags = node.transformFlags;
26012
- setOriginalNode(clone2, node);
26012
+ setOriginal(clone2, node);
26013
26013
  return clone2;
26014
26014
  }
26015
26015
  function cloneNode(node) {
@@ -26034,7 +26034,7 @@ function createNodeFactory(flags, baseFactory2) {
26034
26034
  const clone2 = !isNodeKind(node.kind) ? baseFactory2.createBaseTokenNode(node.kind) : baseFactory2.createBaseNode(node.kind);
26035
26035
  clone2.flags |= node.flags & ~16 /* Synthesized */;
26036
26036
  clone2.transformFlags = node.transformFlags;
26037
- setOriginalNode(clone2, node);
26037
+ setOriginal(clone2, node);
26038
26038
  for (const key in node) {
26039
26039
  if (hasProperty(clone2, key) || !hasProperty(node, key)) {
26040
26040
  continue;
@@ -26559,7 +26559,7 @@ function createNodeFactory(flags, baseFactory2) {
26559
26559
  return typeof value === "number" ? createToken(value) : value;
26560
26560
  }
26561
26561
  function asEmbeddedStatement(statement) {
26562
- return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginalNode(createEmptyStatement(), statement), statement) : statement;
26562
+ return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginal(createEmptyStatement(), statement), statement) : statement;
26563
26563
  }
26564
26564
  function asVariableDeclaration(variableDeclaration) {
26565
26565
  if (typeof variableDeclaration === "string" || variableDeclaration && !isVariableDeclaration(variableDeclaration)) {
@@ -26575,19 +26575,13 @@ function createNodeFactory(flags, baseFactory2) {
26575
26575
  }
26576
26576
  return variableDeclaration;
26577
26577
  }
26578
- }
26579
- function updateWithoutOriginal(updated, original) {
26580
- if (updated !== original) {
26581
- setTextRange(updated, original);
26582
- }
26583
- return updated;
26584
- }
26585
- function updateWithOriginal(updated, original) {
26586
- if (updated !== original) {
26587
- setOriginalNode(updated, original);
26588
- setTextRange(updated, original);
26578
+ function update(updated, original) {
26579
+ if (updated !== original) {
26580
+ setOriginal(updated, original);
26581
+ setTextRange(updated, original);
26582
+ }
26583
+ return updated;
26589
26584
  }
26590
- return updated;
26591
26585
  }
26592
26586
  function getDefaultTagNameForKind(kind) {
26593
26587
  switch (kind) {
@@ -31323,8 +31317,10 @@ var Parser;
31323
31317
  setTextRangePosWidth(sourceFile, 0, sourceText.length);
31324
31318
  setFields(sourceFile);
31325
31319
  if (!isDeclarationFile && isExternalModule(sourceFile) && sourceFile.transformFlags & 67108864 /* ContainsPossibleTopLevelAwait */) {
31320
+ const oldSourceFile = sourceFile;
31326
31321
  sourceFile = reparseTopLevelAwait(sourceFile);
31327
- setFields(sourceFile);
31322
+ if (oldSourceFile !== sourceFile)
31323
+ setFields(sourceFile);
31328
31324
  }
31329
31325
  return sourceFile;
31330
31326
  function setFields(sourceFile2) {
@@ -69560,7 +69556,8 @@ function createTypeChecker(host) {
69560
69556
  if (hasOnlyExpressionInitializer(declaration) && isBlockScopedNameDeclaredBeforeUse(declaration, node)) {
69561
69557
  const initializer = getEffectiveInitializer(declaration);
69562
69558
  if (initializer) {
69563
- return tryGetNameFromType(getTypeOfExpression(initializer));
69559
+ const initializerType = isBindingPattern(declaration.parent) ? getTypeForBindingElement(declaration) : getTypeOfExpression(initializer);
69560
+ return initializerType && tryGetNameFromType(initializerType);
69564
69561
  }
69565
69562
  if (isEnumMember(declaration)) {
69566
69563
  return getTextOfPropertyName(declaration.name);
@@ -70955,10 +70952,10 @@ function createTypeChecker(host) {
70955
70952
  if (isMatchingConstructorReference(right)) {
70956
70953
  return narrowTypeByConstructor(type, operator, left, assumeTrue);
70957
70954
  }
70958
- if (isBooleanLiteral(right)) {
70955
+ if (isBooleanLiteral(right) && !isAccessExpression(left)) {
70959
70956
  return narrowTypeByBooleanComparison(type, left, right, operator, assumeTrue);
70960
70957
  }
70961
- if (isBooleanLiteral(left)) {
70958
+ if (isBooleanLiteral(left) && !isAccessExpression(right)) {
70962
70959
  return narrowTypeByBooleanComparison(type, right, left, operator, assumeTrue);
70963
70960
  }
70964
70961
  break;
@@ -6020,9 +6020,11 @@ declare namespace ts {
6020
6020
  /** @deprecated */
6021
6021
  type AssertionKey = ImportAttributeName;
6022
6022
  /** @deprecated */
6023
- type AssertEntry = ImportAttribute;
6023
+ interface AssertEntry extends ImportAttribute {
6024
+ }
6024
6025
  /** @deprecated */
6025
- type AssertClause = ImportAttributes;
6026
+ interface AssertClause extends ImportAttributes {
6027
+ }
6026
6028
  type ImportAttributeName = Identifier | StringLiteral;
6027
6029
  interface ImportAttribute extends Node {
6028
6030
  readonly kind: SyntaxKind.ImportAttribute;
@@ -10420,7 +10422,7 @@ declare namespace ts {
10420
10422
  installPackage?(options: InstallPackageOptions): Promise<ApplyCodeActionCommandResult>;
10421
10423
  writeFile?(fileName: string, content: string): void;
10422
10424
  getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined;
10423
- jsDocParsingMode?: JSDocParsingMode;
10425
+ jsDocParsingMode?: JSDocParsingMode | undefined;
10424
10426
  }
10425
10427
  type WithMetadata<T> = T & {
10426
10428
  metadata?: unknown;
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.20231121`;
38
+ version = `${versionMajorMinor}.0-dev.20231123`;
39
39
  Comparison = /* @__PURE__ */ ((Comparison3) => {
40
40
  Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
41
41
  Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
@@ -20160,7 +20160,7 @@ ${lanes.join("\n")}
20160
20160
  nodeFactoryPatchers.push(fn);
20161
20161
  }
20162
20162
  function createNodeFactory(flags, baseFactory2) {
20163
- const update = flags & 8 /* NoOriginalNode */ ? updateWithoutOriginal : updateWithOriginal;
20163
+ const setOriginal = flags & 8 /* NoOriginalNode */ ? identity : setOriginalNode;
20164
20164
  const parenthesizerRules = memoize(() => flags & 1 /* NoParenthesizerRules */ ? nullParenthesizerRules : createParenthesizerRules(factory2));
20165
20165
  const converters = memoize(() => flags & 2 /* NoNodeConverters */ ? nullNodeConverters : createNodeConverters(factory2));
20166
20166
  const getBinaryCreateFunction = memoizeOne((operator) => (left, right) => createBinaryExpression(left, operator, right));
@@ -23658,7 +23658,7 @@ ${lanes.join("\n")}
23658
23658
  }
23659
23659
  function cloneSourceFile(source) {
23660
23660
  const node = source.redirectInfo ? cloneRedirectedSourceFile(source) : cloneSourceFileWorker(source);
23661
- setOriginalNode(node, source);
23661
+ setOriginal(node, source);
23662
23662
  return node;
23663
23663
  }
23664
23664
  function cloneSourceFileWithChanges(source, statements, isDeclarationFile, referencedFiles, typeReferences, hasNoDefaultLib, libReferences) {
@@ -23791,7 +23791,7 @@ ${lanes.join("\n")}
23791
23791
  const clone2 = createBaseIdentifier(node.escapedText);
23792
23792
  clone2.flags |= node.flags & ~16 /* Synthesized */;
23793
23793
  clone2.transformFlags = node.transformFlags;
23794
- setOriginalNode(clone2, node);
23794
+ setOriginal(clone2, node);
23795
23795
  setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate });
23796
23796
  return clone2;
23797
23797
  }
@@ -23802,7 +23802,7 @@ ${lanes.join("\n")}
23802
23802
  clone2.flowNode = node.flowNode;
23803
23803
  clone2.symbol = node.symbol;
23804
23804
  clone2.transformFlags = node.transformFlags;
23805
- setOriginalNode(clone2, node);
23805
+ setOriginal(clone2, node);
23806
23806
  const typeArguments = getIdentifierTypeArguments(node);
23807
23807
  if (typeArguments)
23808
23808
  setIdentifierTypeArguments(clone2, typeArguments);
@@ -23812,7 +23812,7 @@ ${lanes.join("\n")}
23812
23812
  const clone2 = createBasePrivateIdentifier(node.escapedText);
23813
23813
  clone2.flags |= node.flags & ~16 /* Synthesized */;
23814
23814
  clone2.transformFlags = node.transformFlags;
23815
- setOriginalNode(clone2, node);
23815
+ setOriginal(clone2, node);
23816
23816
  setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate });
23817
23817
  return clone2;
23818
23818
  }
@@ -23820,7 +23820,7 @@ ${lanes.join("\n")}
23820
23820
  const clone2 = createBasePrivateIdentifier(node.escapedText);
23821
23821
  clone2.flags |= node.flags & ~16 /* Synthesized */;
23822
23822
  clone2.transformFlags = node.transformFlags;
23823
- setOriginalNode(clone2, node);
23823
+ setOriginal(clone2, node);
23824
23824
  return clone2;
23825
23825
  }
23826
23826
  function cloneNode(node) {
@@ -23845,7 +23845,7 @@ ${lanes.join("\n")}
23845
23845
  const clone2 = !isNodeKind(node.kind) ? baseFactory2.createBaseTokenNode(node.kind) : baseFactory2.createBaseNode(node.kind);
23846
23846
  clone2.flags |= node.flags & ~16 /* Synthesized */;
23847
23847
  clone2.transformFlags = node.transformFlags;
23848
- setOriginalNode(clone2, node);
23848
+ setOriginal(clone2, node);
23849
23849
  for (const key in node) {
23850
23850
  if (hasProperty(clone2, key) || !hasProperty(node, key)) {
23851
23851
  continue;
@@ -24370,7 +24370,7 @@ ${lanes.join("\n")}
24370
24370
  return typeof value === "number" ? createToken(value) : value;
24371
24371
  }
24372
24372
  function asEmbeddedStatement(statement) {
24373
- return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginalNode(createEmptyStatement(), statement), statement) : statement;
24373
+ return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginal(createEmptyStatement(), statement), statement) : statement;
24374
24374
  }
24375
24375
  function asVariableDeclaration(variableDeclaration) {
24376
24376
  if (typeof variableDeclaration === "string" || variableDeclaration && !isVariableDeclaration(variableDeclaration)) {
@@ -24386,19 +24386,13 @@ ${lanes.join("\n")}
24386
24386
  }
24387
24387
  return variableDeclaration;
24388
24388
  }
24389
- }
24390
- function updateWithoutOriginal(updated, original) {
24391
- if (updated !== original) {
24392
- setTextRange(updated, original);
24393
- }
24394
- return updated;
24395
- }
24396
- function updateWithOriginal(updated, original) {
24397
- if (updated !== original) {
24398
- setOriginalNode(updated, original);
24399
- setTextRange(updated, original);
24389
+ function update(updated, original) {
24390
+ if (updated !== original) {
24391
+ setOriginal(updated, original);
24392
+ setTextRange(updated, original);
24393
+ }
24394
+ return updated;
24400
24395
  }
24401
- return updated;
24402
24396
  }
24403
24397
  function getDefaultTagNameForKind(kind) {
24404
24398
  switch (kind) {
@@ -29392,8 +29386,10 @@ ${lanes.join("\n")}
29392
29386
  setTextRangePosWidth(sourceFile, 0, sourceText.length);
29393
29387
  setFields(sourceFile);
29394
29388
  if (!isDeclarationFile && isExternalModule(sourceFile) && sourceFile.transformFlags & 67108864 /* ContainsPossibleTopLevelAwait */) {
29389
+ const oldSourceFile = sourceFile;
29395
29390
  sourceFile = reparseTopLevelAwait(sourceFile);
29396
- setFields(sourceFile);
29391
+ if (oldSourceFile !== sourceFile)
29392
+ setFields(sourceFile);
29397
29393
  }
29398
29394
  return sourceFile;
29399
29395
  function setFields(sourceFile2) {
@@ -67324,7 +67320,8 @@ ${lanes.join("\n")}
67324
67320
  if (hasOnlyExpressionInitializer(declaration) && isBlockScopedNameDeclaredBeforeUse(declaration, node)) {
67325
67321
  const initializer = getEffectiveInitializer(declaration);
67326
67322
  if (initializer) {
67327
- return tryGetNameFromType(getTypeOfExpression(initializer));
67323
+ const initializerType = isBindingPattern(declaration.parent) ? getTypeForBindingElement(declaration) : getTypeOfExpression(initializer);
67324
+ return initializerType && tryGetNameFromType(initializerType);
67328
67325
  }
67329
67326
  if (isEnumMember(declaration)) {
67330
67327
  return getTextOfPropertyName(declaration.name);
@@ -68719,10 +68716,10 @@ ${lanes.join("\n")}
68719
68716
  if (isMatchingConstructorReference(right)) {
68720
68717
  return narrowTypeByConstructor(type, operator, left, assumeTrue);
68721
68718
  }
68722
- if (isBooleanLiteral(right)) {
68719
+ if (isBooleanLiteral(right) && !isAccessExpression(left)) {
68723
68720
  return narrowTypeByBooleanComparison(type, left, right, operator, assumeTrue);
68724
68721
  }
68725
- if (isBooleanLiteral(left)) {
68722
+ if (isBooleanLiteral(left) && !isAccessExpression(right)) {
68726
68723
  return narrowTypeByBooleanComparison(type, right, left, operator, assumeTrue);
68727
68724
  }
68728
68725
  break;
@@ -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.20231121`;
57
+ var version = `${versionMajorMinor}.0-dev.20231123`;
58
58
 
59
59
  // src/compiler/core.ts
60
60
  var emptyArray = [];
@@ -12337,7 +12337,7 @@ var nullNodeConverters = {
12337
12337
  var nextAutoGenerateId = 0;
12338
12338
  var nodeFactoryPatchers = [];
12339
12339
  function createNodeFactory(flags, baseFactory2) {
12340
- const update = flags & 8 /* NoOriginalNode */ ? updateWithoutOriginal : updateWithOriginal;
12340
+ const setOriginal = flags & 8 /* NoOriginalNode */ ? identity : setOriginalNode;
12341
12341
  const parenthesizerRules = memoize(() => flags & 1 /* NoParenthesizerRules */ ? nullParenthesizerRules : createParenthesizerRules(factory2));
12342
12342
  const converters = memoize(() => flags & 2 /* NoNodeConverters */ ? nullNodeConverters : createNodeConverters(factory2));
12343
12343
  const getBinaryCreateFunction = memoizeOne((operator) => (left, right) => createBinaryExpression(left, operator, right));
@@ -15835,7 +15835,7 @@ function createNodeFactory(flags, baseFactory2) {
15835
15835
  }
15836
15836
  function cloneSourceFile(source) {
15837
15837
  const node = source.redirectInfo ? cloneRedirectedSourceFile(source) : cloneSourceFileWorker(source);
15838
- setOriginalNode(node, source);
15838
+ setOriginal(node, source);
15839
15839
  return node;
15840
15840
  }
15841
15841
  function cloneSourceFileWithChanges(source, statements, isDeclarationFile, referencedFiles, typeReferences, hasNoDefaultLib, libReferences) {
@@ -15968,7 +15968,7 @@ function createNodeFactory(flags, baseFactory2) {
15968
15968
  const clone2 = createBaseIdentifier(node.escapedText);
15969
15969
  clone2.flags |= node.flags & ~16 /* Synthesized */;
15970
15970
  clone2.transformFlags = node.transformFlags;
15971
- setOriginalNode(clone2, node);
15971
+ setOriginal(clone2, node);
15972
15972
  setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate });
15973
15973
  return clone2;
15974
15974
  }
@@ -15979,7 +15979,7 @@ function createNodeFactory(flags, baseFactory2) {
15979
15979
  clone2.flowNode = node.flowNode;
15980
15980
  clone2.symbol = node.symbol;
15981
15981
  clone2.transformFlags = node.transformFlags;
15982
- setOriginalNode(clone2, node);
15982
+ setOriginal(clone2, node);
15983
15983
  const typeArguments = getIdentifierTypeArguments(node);
15984
15984
  if (typeArguments)
15985
15985
  setIdentifierTypeArguments(clone2, typeArguments);
@@ -15989,7 +15989,7 @@ function createNodeFactory(flags, baseFactory2) {
15989
15989
  const clone2 = createBasePrivateIdentifier(node.escapedText);
15990
15990
  clone2.flags |= node.flags & ~16 /* Synthesized */;
15991
15991
  clone2.transformFlags = node.transformFlags;
15992
- setOriginalNode(clone2, node);
15992
+ setOriginal(clone2, node);
15993
15993
  setIdentifierAutoGenerate(clone2, { ...node.emitNode.autoGenerate });
15994
15994
  return clone2;
15995
15995
  }
@@ -15997,7 +15997,7 @@ function createNodeFactory(flags, baseFactory2) {
15997
15997
  const clone2 = createBasePrivateIdentifier(node.escapedText);
15998
15998
  clone2.flags |= node.flags & ~16 /* Synthesized */;
15999
15999
  clone2.transformFlags = node.transformFlags;
16000
- setOriginalNode(clone2, node);
16000
+ setOriginal(clone2, node);
16001
16001
  return clone2;
16002
16002
  }
16003
16003
  function cloneNode(node) {
@@ -16022,7 +16022,7 @@ function createNodeFactory(flags, baseFactory2) {
16022
16022
  const clone2 = !isNodeKind(node.kind) ? baseFactory2.createBaseTokenNode(node.kind) : baseFactory2.createBaseNode(node.kind);
16023
16023
  clone2.flags |= node.flags & ~16 /* Synthesized */;
16024
16024
  clone2.transformFlags = node.transformFlags;
16025
- setOriginalNode(clone2, node);
16025
+ setOriginal(clone2, node);
16026
16026
  for (const key in node) {
16027
16027
  if (hasProperty(clone2, key) || !hasProperty(node, key)) {
16028
16028
  continue;
@@ -16547,7 +16547,7 @@ function createNodeFactory(flags, baseFactory2) {
16547
16547
  return typeof value === "number" ? createToken(value) : value;
16548
16548
  }
16549
16549
  function asEmbeddedStatement(statement) {
16550
- return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginalNode(createEmptyStatement(), statement), statement) : statement;
16550
+ return statement && isNotEmittedStatement(statement) ? setTextRange(setOriginal(createEmptyStatement(), statement), statement) : statement;
16551
16551
  }
16552
16552
  function asVariableDeclaration(variableDeclaration) {
16553
16553
  if (typeof variableDeclaration === "string" || variableDeclaration && !isVariableDeclaration(variableDeclaration)) {
@@ -16563,19 +16563,13 @@ function createNodeFactory(flags, baseFactory2) {
16563
16563
  }
16564
16564
  return variableDeclaration;
16565
16565
  }
16566
- }
16567
- function updateWithoutOriginal(updated, original) {
16568
- if (updated !== original) {
16569
- setTextRange(updated, original);
16570
- }
16571
- return updated;
16572
- }
16573
- function updateWithOriginal(updated, original) {
16574
- if (updated !== original) {
16575
- setOriginalNode(updated, original);
16576
- setTextRange(updated, original);
16566
+ function update(updated, original) {
16567
+ if (updated !== original) {
16568
+ setOriginal(updated, original);
16569
+ setTextRange(updated, original);
16570
+ }
16571
+ return updated;
16577
16572
  }
16578
- return updated;
16579
16573
  }
16580
16574
  function getDefaultTagNameForKind(kind) {
16581
16575
  switch (kind) {
@@ -18711,8 +18705,10 @@ var Parser;
18711
18705
  setTextRangePosWidth(sourceFile, 0, sourceText.length);
18712
18706
  setFields(sourceFile);
18713
18707
  if (!isDeclarationFile && isExternalModule(sourceFile) && sourceFile.transformFlags & 67108864 /* ContainsPossibleTopLevelAwait */) {
18708
+ const oldSourceFile = sourceFile;
18714
18709
  sourceFile = reparseTopLevelAwait(sourceFile);
18715
- setFields(sourceFile);
18710
+ if (oldSourceFile !== sourceFile)
18711
+ setFields(sourceFile);
18716
18712
  }
18717
18713
  return sourceFile;
18718
18714
  function setFields(sourceFile2) {
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.20231121",
5
+ "version": "5.4.0-dev.20231123",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [
@@ -114,5 +114,5 @@
114
114
  "node": "20.1.0",
115
115
  "npm": "8.19.4"
116
116
  },
117
- "gitHead": "c266e47794fbd187425989448670238576523d4e"
117
+ "gitHead": "d4fbc9b57d9aa7d02faac9b1e9bb7b37c687f6e9"
118
118
  }