typescript 4.9.0-dev.20220925 → 4.9.0-dev.20220927

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
@@ -69,7 +69,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
69
69
  var ts;
70
70
  (function (ts) {
71
71
  ts.versionMajorMinor = "4.9";
72
- ts.version = "".concat(ts.versionMajorMinor, ".0-dev.20220925");
72
+ ts.version = "".concat(ts.versionMajorMinor, ".0-dev.20220927");
73
73
  var NativeCollections;
74
74
  (function (NativeCollections) {
75
75
  var globals = typeof globalThis !== "undefined" ? globalThis :
@@ -52722,7 +52722,15 @@ var ts;
52722
52722
  return accessFlags & 1 ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type;
52723
52723
  }
52724
52724
  errorIfWritingToReadonlyIndex(indexInfo);
52725
- return accessFlags & 1 ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type;
52725
+ if ((accessFlags & 1) &&
52726
+ !(objectType.symbol &&
52727
+ objectType.symbol.flags & (256 | 128) &&
52728
+ (indexType.symbol &&
52729
+ indexType.flags & 1024 &&
52730
+ getParentOfSymbol(indexType.symbol) === objectType.symbol))) {
52731
+ return getUnionType([indexInfo.type, undefinedType]);
52732
+ }
52733
+ return indexInfo.type;
52726
52734
  }
52727
52735
  if (indexType.flags & 131072) {
52728
52736
  return neverType;
@@ -59126,7 +59134,7 @@ var ts;
59126
59134
  }
59127
59135
  if (ts.isEntityNameExpression(node.argumentExpression)) {
59128
59136
  var symbol = resolveEntityName(node.argumentExpression, 111551, true);
59129
- if (!symbol || !isConstVariable(symbol))
59137
+ if (!symbol || !(isConstVariable(symbol) || (symbol.flags & 8)))
59130
59138
  return undefined;
59131
59139
  var declaration = symbol.valueDeclaration;
59132
59140
  if (declaration === undefined)
@@ -59140,7 +59148,12 @@ var ts;
59140
59148
  }
59141
59149
  if (ts.hasOnlyExpressionInitializer(declaration) && isBlockScopedNameDeclaredBeforeUse(declaration, node.argumentExpression)) {
59142
59150
  var initializer = ts.getEffectiveInitializer(declaration);
59143
- return initializer && tryGetNameFromType(getTypeOfExpression(initializer));
59151
+ if (initializer) {
59152
+ return tryGetNameFromType(getTypeOfExpression(initializer));
59153
+ }
59154
+ if (ts.isEnumMember(declaration)) {
59155
+ return ts.getTextOfPropertyName(declaration.name);
59156
+ }
59144
59157
  }
59145
59158
  }
59146
59159
  return undefined;
package/lib/tsserver.js CHANGED
@@ -109,7 +109,7 @@ var ts;
109
109
  // The following is baselined as a literal template type without intervention
110
110
  /** The version of the TypeScript compiler release */
111
111
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
112
- ts.version = "".concat(ts.versionMajorMinor, ".0-dev.20220925");
112
+ ts.version = "".concat(ts.versionMajorMinor, ".0-dev.20220927");
113
113
  /* @internal */
114
114
  var Comparison;
115
115
  (function (Comparison) {
@@ -63343,7 +63343,18 @@ var ts;
63343
63343
  return accessFlags & 1 /* AccessFlags.IncludeUndefined */ ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type;
63344
63344
  }
63345
63345
  errorIfWritingToReadonlyIndex(indexInfo);
63346
- return accessFlags & 1 /* AccessFlags.IncludeUndefined */ ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type;
63346
+ // When accessing an enum object with its own type,
63347
+ // e.g. E[E.A] for enum E { A }, undefined shouldn't
63348
+ // be included in the result type
63349
+ if ((accessFlags & 1 /* AccessFlags.IncludeUndefined */) &&
63350
+ !(objectType.symbol &&
63351
+ objectType.symbol.flags & (256 /* SymbolFlags.RegularEnum */ | 128 /* SymbolFlags.ConstEnum */) &&
63352
+ (indexType.symbol &&
63353
+ indexType.flags & 1024 /* TypeFlags.EnumLiteral */ &&
63354
+ getParentOfSymbol(indexType.symbol) === objectType.symbol))) {
63355
+ return getUnionType([indexInfo.type, undefinedType]);
63356
+ }
63357
+ return indexInfo.type;
63347
63358
  }
63348
63359
  if (indexType.flags & 131072 /* TypeFlags.Never */) {
63349
63360
  return neverType;
@@ -70762,7 +70773,7 @@ var ts;
70762
70773
  }
70763
70774
  if (ts.isEntityNameExpression(node.argumentExpression)) {
70764
70775
  var symbol = resolveEntityName(node.argumentExpression, 111551 /* SymbolFlags.Value */, /*ignoreErrors*/ true);
70765
- if (!symbol || !isConstVariable(symbol))
70776
+ if (!symbol || !(isConstVariable(symbol) || (symbol.flags & 8 /* SymbolFlags.EnumMember */)))
70766
70777
  return undefined;
70767
70778
  var declaration = symbol.valueDeclaration;
70768
70779
  if (declaration === undefined)
@@ -70776,7 +70787,12 @@ var ts;
70776
70787
  }
70777
70788
  if (ts.hasOnlyExpressionInitializer(declaration) && isBlockScopedNameDeclaredBeforeUse(declaration, node.argumentExpression)) {
70778
70789
  var initializer = ts.getEffectiveInitializer(declaration);
70779
- return initializer && tryGetNameFromType(getTypeOfExpression(initializer));
70790
+ if (initializer) {
70791
+ return tryGetNameFromType(getTypeOfExpression(initializer));
70792
+ }
70793
+ if (ts.isEnumMember(declaration)) {
70794
+ return ts.getTextOfPropertyName(declaration.name);
70795
+ }
70780
70796
  }
70781
70797
  }
70782
70798
  return undefined;
@@ -175694,18 +175710,20 @@ var ts;
175694
175710
  return ensureProject ? this.ensureDefaultProjectForFile(fileName) : this.tryGetDefaultProjectForFile(fileName);
175695
175711
  };
175696
175712
  /* @internal */
175697
- ProjectService.prototype.tryGetDefaultProjectForFile = function (fileName) {
175698
- var scriptInfo = this.getScriptInfoForNormalizedPath(fileName);
175713
+ ProjectService.prototype.tryGetDefaultProjectForFile = function (fileNameOrScriptInfo) {
175714
+ var scriptInfo = ts.isString(fileNameOrScriptInfo) ? this.getScriptInfoForNormalizedPath(fileNameOrScriptInfo) : fileNameOrScriptInfo;
175699
175715
  return scriptInfo && !scriptInfo.isOrphan() ? scriptInfo.getDefaultProject() : undefined;
175700
175716
  };
175701
175717
  /* @internal */
175702
- ProjectService.prototype.ensureDefaultProjectForFile = function (fileName) {
175703
- return this.tryGetDefaultProjectForFile(fileName) || this.doEnsureDefaultProjectForFile(fileName);
175718
+ ProjectService.prototype.ensureDefaultProjectForFile = function (fileNameOrScriptInfo) {
175719
+ return this.tryGetDefaultProjectForFile(fileNameOrScriptInfo) || this.doEnsureDefaultProjectForFile(fileNameOrScriptInfo);
175704
175720
  };
175705
- ProjectService.prototype.doEnsureDefaultProjectForFile = function (fileName) {
175721
+ ProjectService.prototype.doEnsureDefaultProjectForFile = function (fileNameOrScriptInfo) {
175706
175722
  this.ensureProjectStructuresUptoDate();
175707
- var scriptInfo = this.getScriptInfoForNormalizedPath(fileName);
175708
- return scriptInfo ? scriptInfo.getDefaultProject() : (this.logErrorForScriptInfoNotFound(fileName), server.Errors.ThrowNoProject());
175723
+ var scriptInfo = ts.isString(fileNameOrScriptInfo) ? this.getScriptInfoForNormalizedPath(fileNameOrScriptInfo) : fileNameOrScriptInfo;
175724
+ return scriptInfo ?
175725
+ scriptInfo.getDefaultProject() :
175726
+ (this.logErrorForScriptInfoNotFound(ts.isString(fileNameOrScriptInfo) ? fileNameOrScriptInfo : fileNameOrScriptInfo.fileName), server.Errors.ThrowNoProject());
175709
175727
  };
175710
175728
  ProjectService.prototype.getScriptInfoEnsuringProjectsUptoDate = function (uncheckedFileName) {
175711
175729
  this.ensureProjectStructuresUptoDate();
@@ -177877,7 +177895,7 @@ var ts;
177877
177895
  if (this.serverMode !== ts.LanguageServiceMode.Semantic || !this.eventHandler || !scriptInfo.isJavaScript() || !ts.addToSeen(this.allJsFilesForOpenFileTelemetry, scriptInfo.path)) {
177878
177896
  return;
177879
177897
  }
177880
- var project = scriptInfo.getDefaultProject();
177898
+ var project = this.ensureDefaultProjectForFile(scriptInfo);
177881
177899
  if (!project.languageServiceEnabled) {
177882
177900
  return;
177883
177901
  }
@@ -180477,6 +180495,10 @@ var ts;
180477
180495
  this.projectService.logErrorForScriptInfoNotFound(args.file);
180478
180496
  return server.Errors.ThrowNoProject();
180479
180497
  }
180498
+ else if (!getScriptInfoEnsuringProjectsUptoDate) {
180499
+ // Ensure there are containing projects are present
180500
+ this.projectService.ensureDefaultProjectForFile(scriptInfo);
180501
+ }
180480
180502
  projects = scriptInfo.containingProjects;
180481
180503
  symLinkedProjects = this.projectService.getSymlinkedProjects(scriptInfo);
180482
180504
  }
@@ -180603,13 +180625,7 @@ var ts;
180603
180625
  return this.getFileAndProjectWorker(args.file, args.projectFileName);
180604
180626
  };
180605
180627
  Session.prototype.getFileAndLanguageServiceForSyntacticOperation = function (args) {
180606
- // Since this is syntactic operation, there should always be project for the file
180607
- // throw if we dont get project
180608
- var file = server.toNormalizedPath(args.file);
180609
- var project = this.getProject(args.projectFileName) || this.projectService.ensureDefaultProjectForFile(file);
180610
- if (!project) {
180611
- return server.Errors.ThrowNoProject();
180612
- }
180628
+ var _a = this.getFileAndProject(args), file = _a.file, project = _a.project;
180613
180629
  return {
180614
180630
  file: file,
180615
180631
  languageService: project.getLanguageService(/*ensureSynchronized*/ false)
@@ -108,7 +108,7 @@ var ts;
108
108
  // The following is baselined as a literal template type without intervention
109
109
  /** The version of the TypeScript compiler release */
110
110
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
111
- ts.version = "".concat(ts.versionMajorMinor, ".0-dev.20220925");
111
+ ts.version = "".concat(ts.versionMajorMinor, ".0-dev.20220927");
112
112
  /* @internal */
113
113
  var Comparison;
114
114
  (function (Comparison) {
@@ -63342,7 +63342,18 @@ var ts;
63342
63342
  return accessFlags & 1 /* AccessFlags.IncludeUndefined */ ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type;
63343
63343
  }
63344
63344
  errorIfWritingToReadonlyIndex(indexInfo);
63345
- return accessFlags & 1 /* AccessFlags.IncludeUndefined */ ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type;
63345
+ // When accessing an enum object with its own type,
63346
+ // e.g. E[E.A] for enum E { A }, undefined shouldn't
63347
+ // be included in the result type
63348
+ if ((accessFlags & 1 /* AccessFlags.IncludeUndefined */) &&
63349
+ !(objectType.symbol &&
63350
+ objectType.symbol.flags & (256 /* SymbolFlags.RegularEnum */ | 128 /* SymbolFlags.ConstEnum */) &&
63351
+ (indexType.symbol &&
63352
+ indexType.flags & 1024 /* TypeFlags.EnumLiteral */ &&
63353
+ getParentOfSymbol(indexType.symbol) === objectType.symbol))) {
63354
+ return getUnionType([indexInfo.type, undefinedType]);
63355
+ }
63356
+ return indexInfo.type;
63346
63357
  }
63347
63358
  if (indexType.flags & 131072 /* TypeFlags.Never */) {
63348
63359
  return neverType;
@@ -70761,7 +70772,7 @@ var ts;
70761
70772
  }
70762
70773
  if (ts.isEntityNameExpression(node.argumentExpression)) {
70763
70774
  var symbol = resolveEntityName(node.argumentExpression, 111551 /* SymbolFlags.Value */, /*ignoreErrors*/ true);
70764
- if (!symbol || !isConstVariable(symbol))
70775
+ if (!symbol || !(isConstVariable(symbol) || (symbol.flags & 8 /* SymbolFlags.EnumMember */)))
70765
70776
  return undefined;
70766
70777
  var declaration = symbol.valueDeclaration;
70767
70778
  if (declaration === undefined)
@@ -70775,7 +70786,12 @@ var ts;
70775
70786
  }
70776
70787
  if (ts.hasOnlyExpressionInitializer(declaration) && isBlockScopedNameDeclaredBeforeUse(declaration, node.argumentExpression)) {
70777
70788
  var initializer = ts.getEffectiveInitializer(declaration);
70778
- return initializer && tryGetNameFromType(getTypeOfExpression(initializer));
70789
+ if (initializer) {
70790
+ return tryGetNameFromType(getTypeOfExpression(initializer));
70791
+ }
70792
+ if (ts.isEnumMember(declaration)) {
70793
+ return ts.getTextOfPropertyName(declaration.name);
70794
+ }
70779
70795
  }
70780
70796
  }
70781
70797
  return undefined;
@@ -175693,18 +175709,20 @@ var ts;
175693
175709
  return ensureProject ? this.ensureDefaultProjectForFile(fileName) : this.tryGetDefaultProjectForFile(fileName);
175694
175710
  };
175695
175711
  /* @internal */
175696
- ProjectService.prototype.tryGetDefaultProjectForFile = function (fileName) {
175697
- var scriptInfo = this.getScriptInfoForNormalizedPath(fileName);
175712
+ ProjectService.prototype.tryGetDefaultProjectForFile = function (fileNameOrScriptInfo) {
175713
+ var scriptInfo = ts.isString(fileNameOrScriptInfo) ? this.getScriptInfoForNormalizedPath(fileNameOrScriptInfo) : fileNameOrScriptInfo;
175698
175714
  return scriptInfo && !scriptInfo.isOrphan() ? scriptInfo.getDefaultProject() : undefined;
175699
175715
  };
175700
175716
  /* @internal */
175701
- ProjectService.prototype.ensureDefaultProjectForFile = function (fileName) {
175702
- return this.tryGetDefaultProjectForFile(fileName) || this.doEnsureDefaultProjectForFile(fileName);
175717
+ ProjectService.prototype.ensureDefaultProjectForFile = function (fileNameOrScriptInfo) {
175718
+ return this.tryGetDefaultProjectForFile(fileNameOrScriptInfo) || this.doEnsureDefaultProjectForFile(fileNameOrScriptInfo);
175703
175719
  };
175704
- ProjectService.prototype.doEnsureDefaultProjectForFile = function (fileName) {
175720
+ ProjectService.prototype.doEnsureDefaultProjectForFile = function (fileNameOrScriptInfo) {
175705
175721
  this.ensureProjectStructuresUptoDate();
175706
- var scriptInfo = this.getScriptInfoForNormalizedPath(fileName);
175707
- return scriptInfo ? scriptInfo.getDefaultProject() : (this.logErrorForScriptInfoNotFound(fileName), server.Errors.ThrowNoProject());
175722
+ var scriptInfo = ts.isString(fileNameOrScriptInfo) ? this.getScriptInfoForNormalizedPath(fileNameOrScriptInfo) : fileNameOrScriptInfo;
175723
+ return scriptInfo ?
175724
+ scriptInfo.getDefaultProject() :
175725
+ (this.logErrorForScriptInfoNotFound(ts.isString(fileNameOrScriptInfo) ? fileNameOrScriptInfo : fileNameOrScriptInfo.fileName), server.Errors.ThrowNoProject());
175708
175726
  };
175709
175727
  ProjectService.prototype.getScriptInfoEnsuringProjectsUptoDate = function (uncheckedFileName) {
175710
175728
  this.ensureProjectStructuresUptoDate();
@@ -177876,7 +177894,7 @@ var ts;
177876
177894
  if (this.serverMode !== ts.LanguageServiceMode.Semantic || !this.eventHandler || !scriptInfo.isJavaScript() || !ts.addToSeen(this.allJsFilesForOpenFileTelemetry, scriptInfo.path)) {
177877
177895
  return;
177878
177896
  }
177879
- var project = scriptInfo.getDefaultProject();
177897
+ var project = this.ensureDefaultProjectForFile(scriptInfo);
177880
177898
  if (!project.languageServiceEnabled) {
177881
177899
  return;
177882
177900
  }
@@ -180476,6 +180494,10 @@ var ts;
180476
180494
  this.projectService.logErrorForScriptInfoNotFound(args.file);
180477
180495
  return server.Errors.ThrowNoProject();
180478
180496
  }
180497
+ else if (!getScriptInfoEnsuringProjectsUptoDate) {
180498
+ // Ensure there are containing projects are present
180499
+ this.projectService.ensureDefaultProjectForFile(scriptInfo);
180500
+ }
180479
180501
  projects = scriptInfo.containingProjects;
180480
180502
  symLinkedProjects = this.projectService.getSymlinkedProjects(scriptInfo);
180481
180503
  }
@@ -180602,13 +180624,7 @@ var ts;
180602
180624
  return this.getFileAndProjectWorker(args.file, args.projectFileName);
180603
180625
  };
180604
180626
  Session.prototype.getFileAndLanguageServiceForSyntacticOperation = function (args) {
180605
- // Since this is syntactic operation, there should always be project for the file
180606
- // throw if we dont get project
180607
- var file = server.toNormalizedPath(args.file);
180608
- var project = this.getProject(args.projectFileName) || this.projectService.ensureDefaultProjectForFile(file);
180609
- if (!project) {
180610
- return server.Errors.ThrowNoProject();
180611
- }
180627
+ var _a = this.getFileAndProject(args), file = _a.file, project = _a.project;
180612
180628
  return {
180613
180629
  file: file,
180614
180630
  languageService: project.getLanguageService(/*ensureSynchronized*/ false)
package/lib/typescript.js CHANGED
@@ -99,7 +99,7 @@ var ts;
99
99
  // The following is baselined as a literal template type without intervention
100
100
  /** The version of the TypeScript compiler release */
101
101
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
102
- ts.version = "".concat(ts.versionMajorMinor, ".0-dev.20220925");
102
+ ts.version = "".concat(ts.versionMajorMinor, ".0-dev.20220927");
103
103
  /* @internal */
104
104
  var Comparison;
105
105
  (function (Comparison) {
@@ -63333,7 +63333,18 @@ var ts;
63333
63333
  return accessFlags & 1 /* AccessFlags.IncludeUndefined */ ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type;
63334
63334
  }
63335
63335
  errorIfWritingToReadonlyIndex(indexInfo);
63336
- return accessFlags & 1 /* AccessFlags.IncludeUndefined */ ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type;
63336
+ // When accessing an enum object with its own type,
63337
+ // e.g. E[E.A] for enum E { A }, undefined shouldn't
63338
+ // be included in the result type
63339
+ if ((accessFlags & 1 /* AccessFlags.IncludeUndefined */) &&
63340
+ !(objectType.symbol &&
63341
+ objectType.symbol.flags & (256 /* SymbolFlags.RegularEnum */ | 128 /* SymbolFlags.ConstEnum */) &&
63342
+ (indexType.symbol &&
63343
+ indexType.flags & 1024 /* TypeFlags.EnumLiteral */ &&
63344
+ getParentOfSymbol(indexType.symbol) === objectType.symbol))) {
63345
+ return getUnionType([indexInfo.type, undefinedType]);
63346
+ }
63347
+ return indexInfo.type;
63337
63348
  }
63338
63349
  if (indexType.flags & 131072 /* TypeFlags.Never */) {
63339
63350
  return neverType;
@@ -70752,7 +70763,7 @@ var ts;
70752
70763
  }
70753
70764
  if (ts.isEntityNameExpression(node.argumentExpression)) {
70754
70765
  var symbol = resolveEntityName(node.argumentExpression, 111551 /* SymbolFlags.Value */, /*ignoreErrors*/ true);
70755
- if (!symbol || !isConstVariable(symbol))
70766
+ if (!symbol || !(isConstVariable(symbol) || (symbol.flags & 8 /* SymbolFlags.EnumMember */)))
70756
70767
  return undefined;
70757
70768
  var declaration = symbol.valueDeclaration;
70758
70769
  if (declaration === undefined)
@@ -70766,7 +70777,12 @@ var ts;
70766
70777
  }
70767
70778
  if (ts.hasOnlyExpressionInitializer(declaration) && isBlockScopedNameDeclaredBeforeUse(declaration, node.argumentExpression)) {
70768
70779
  var initializer = ts.getEffectiveInitializer(declaration);
70769
- return initializer && tryGetNameFromType(getTypeOfExpression(initializer));
70780
+ if (initializer) {
70781
+ return tryGetNameFromType(getTypeOfExpression(initializer));
70782
+ }
70783
+ if (ts.isEnumMember(declaration)) {
70784
+ return ts.getTextOfPropertyName(declaration.name);
70785
+ }
70770
70786
  }
70771
70787
  }
70772
70788
  return undefined;
@@ -99,7 +99,7 @@ var ts;
99
99
  // The following is baselined as a literal template type without intervention
100
100
  /** The version of the TypeScript compiler release */
101
101
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
102
- ts.version = "".concat(ts.versionMajorMinor, ".0-dev.20220925");
102
+ ts.version = "".concat(ts.versionMajorMinor, ".0-dev.20220927");
103
103
  /* @internal */
104
104
  var Comparison;
105
105
  (function (Comparison) {
@@ -63333,7 +63333,18 @@ var ts;
63333
63333
  return accessFlags & 1 /* AccessFlags.IncludeUndefined */ ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type;
63334
63334
  }
63335
63335
  errorIfWritingToReadonlyIndex(indexInfo);
63336
- return accessFlags & 1 /* AccessFlags.IncludeUndefined */ ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type;
63336
+ // When accessing an enum object with its own type,
63337
+ // e.g. E[E.A] for enum E { A }, undefined shouldn't
63338
+ // be included in the result type
63339
+ if ((accessFlags & 1 /* AccessFlags.IncludeUndefined */) &&
63340
+ !(objectType.symbol &&
63341
+ objectType.symbol.flags & (256 /* SymbolFlags.RegularEnum */ | 128 /* SymbolFlags.ConstEnum */) &&
63342
+ (indexType.symbol &&
63343
+ indexType.flags & 1024 /* TypeFlags.EnumLiteral */ &&
63344
+ getParentOfSymbol(indexType.symbol) === objectType.symbol))) {
63345
+ return getUnionType([indexInfo.type, undefinedType]);
63346
+ }
63347
+ return indexInfo.type;
63337
63348
  }
63338
63349
  if (indexType.flags & 131072 /* TypeFlags.Never */) {
63339
63350
  return neverType;
@@ -70752,7 +70763,7 @@ var ts;
70752
70763
  }
70753
70764
  if (ts.isEntityNameExpression(node.argumentExpression)) {
70754
70765
  var symbol = resolveEntityName(node.argumentExpression, 111551 /* SymbolFlags.Value */, /*ignoreErrors*/ true);
70755
- if (!symbol || !isConstVariable(symbol))
70766
+ if (!symbol || !(isConstVariable(symbol) || (symbol.flags & 8 /* SymbolFlags.EnumMember */)))
70756
70767
  return undefined;
70757
70768
  var declaration = symbol.valueDeclaration;
70758
70769
  if (declaration === undefined)
@@ -70766,7 +70777,12 @@ var ts;
70766
70777
  }
70767
70778
  if (ts.hasOnlyExpressionInitializer(declaration) && isBlockScopedNameDeclaredBeforeUse(declaration, node.argumentExpression)) {
70768
70779
  var initializer = ts.getEffectiveInitializer(declaration);
70769
- return initializer && tryGetNameFromType(getTypeOfExpression(initializer));
70780
+ if (initializer) {
70781
+ return tryGetNameFromType(getTypeOfExpression(initializer));
70782
+ }
70783
+ if (ts.isEnumMember(declaration)) {
70784
+ return ts.getTextOfPropertyName(declaration.name);
70785
+ }
70770
70786
  }
70771
70787
  }
70772
70788
  return undefined;
@@ -89,7 +89,7 @@ var ts;
89
89
  // The following is baselined as a literal template type without intervention
90
90
  /** The version of the TypeScript compiler release */
91
91
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
92
- ts.version = "".concat(ts.versionMajorMinor, ".0-dev.20220925");
92
+ ts.version = "".concat(ts.versionMajorMinor, ".0-dev.20220927");
93
93
  /* @internal */
94
94
  var Comparison;
95
95
  (function (Comparison) {
@@ -63323,7 +63323,18 @@ var ts;
63323
63323
  return accessFlags & 1 /* AccessFlags.IncludeUndefined */ ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type;
63324
63324
  }
63325
63325
  errorIfWritingToReadonlyIndex(indexInfo);
63326
- return accessFlags & 1 /* AccessFlags.IncludeUndefined */ ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type;
63326
+ // When accessing an enum object with its own type,
63327
+ // e.g. E[E.A] for enum E { A }, undefined shouldn't
63328
+ // be included in the result type
63329
+ if ((accessFlags & 1 /* AccessFlags.IncludeUndefined */) &&
63330
+ !(objectType.symbol &&
63331
+ objectType.symbol.flags & (256 /* SymbolFlags.RegularEnum */ | 128 /* SymbolFlags.ConstEnum */) &&
63332
+ (indexType.symbol &&
63333
+ indexType.flags & 1024 /* TypeFlags.EnumLiteral */ &&
63334
+ getParentOfSymbol(indexType.symbol) === objectType.symbol))) {
63335
+ return getUnionType([indexInfo.type, undefinedType]);
63336
+ }
63337
+ return indexInfo.type;
63327
63338
  }
63328
63339
  if (indexType.flags & 131072 /* TypeFlags.Never */) {
63329
63340
  return neverType;
@@ -70742,7 +70753,7 @@ var ts;
70742
70753
  }
70743
70754
  if (ts.isEntityNameExpression(node.argumentExpression)) {
70744
70755
  var symbol = resolveEntityName(node.argumentExpression, 111551 /* SymbolFlags.Value */, /*ignoreErrors*/ true);
70745
- if (!symbol || !isConstVariable(symbol))
70756
+ if (!symbol || !(isConstVariable(symbol) || (symbol.flags & 8 /* SymbolFlags.EnumMember */)))
70746
70757
  return undefined;
70747
70758
  var declaration = symbol.valueDeclaration;
70748
70759
  if (declaration === undefined)
@@ -70756,7 +70767,12 @@ var ts;
70756
70767
  }
70757
70768
  if (ts.hasOnlyExpressionInitializer(declaration) && isBlockScopedNameDeclaredBeforeUse(declaration, node.argumentExpression)) {
70758
70769
  var initializer = ts.getEffectiveInitializer(declaration);
70759
- return initializer && tryGetNameFromType(getTypeOfExpression(initializer));
70770
+ if (initializer) {
70771
+ return tryGetNameFromType(getTypeOfExpression(initializer));
70772
+ }
70773
+ if (ts.isEnumMember(declaration)) {
70774
+ return ts.getTextOfPropertyName(declaration.name);
70775
+ }
70760
70776
  }
70761
70777
  }
70762
70778
  return undefined;
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": "4.9.0-dev.20220925",
5
+ "version": "4.9.0-dev.20220927",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [