From ba10a0d7c06df259e620645a8d6fd9a5262d8b5d Mon Sep 17 00:00:00 2001 From: navya9singh Date: Thu, 15 Sep 2022 15:56:31 -0700 Subject: [PATCH] Removing duplicated code --- src/compiler/checker.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f5e29d66dc181..3e823c25e641b 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -15589,10 +15589,15 @@ m2: ${(this.mapper2 as unknown as DebugTypeMapper).__debugToString().split("\n") return accessFlags & AccessFlags.IncludeUndefined ? getUnionType([indexInfo.type, undefinedType]) : indexInfo.type; } errorIfWritingToReadonlyIndex(indexInfo); - if (accessFlags & AccessFlags.IncludeUndefined) { - if (objectType.symbol && objectType.symbol.flags & (SymbolFlags.RegularEnum | SymbolFlags.ConstEnum) && (indexType.symbol && indexType.flags & TypeFlags.EnumLiteral && getParentOfSymbol(indexType.symbol) === objectType.symbol)) { - return indexInfo.type; - } + // When accessing an enum object with its own type, + // e.g. E[E.A] for enum E { A }, undefined shouldn't + // be included in the result type + if ((accessFlags & AccessFlags.IncludeUndefined) && + !(objectType.symbol && + objectType.symbol.flags & (SymbolFlags.RegularEnum | SymbolFlags.ConstEnum) && + (indexType.symbol && + indexType.flags & TypeFlags.EnumLiteral && + getParentOfSymbol(indexType.symbol) === objectType.symbol))) { return getUnionType([indexInfo.type, undefinedType]); } return indexInfo.type;