Skip to content

Commit 04a449f

Browse files
committed
Add test again
1 parent 1b4935c commit 04a449f

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

src/compiler/checker.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3471,8 +3471,28 @@ namespace ts {
34713471
: getPropertyOfType(type, memberName);
34723472
}
34733473

3474+
function isLateBindingContainer(symbol: Symbol): boolean {
3475+
if (!(symbol.flags & (SymbolFlags.LateBindingContainer | SymbolFlags.Enum))) {
3476+
return false;
3477+
}
3478+
3479+
if (symbol.flags & SymbolFlags.Enum) {
3480+
const links = getSymbolLinks(symbol);
3481+
if (links.enumHasLateBoundMember === undefined) {
3482+
for (const declaration of symbol.declarations) {
3483+
if (isEnumDeclaration(declaration) && some(declaration.members, isSpreadEnumMember)) {
3484+
return links.enumHasLateBoundMember = true;
3485+
}
3486+
}
3487+
return links.enumHasLateBoundMember = false;
3488+
}
3489+
return links.enumHasLateBoundMember;
3490+
}
3491+
return true;
3492+
}
3493+
34743494
function getExportsOfSymbol(symbol: Symbol): SymbolTable {
3475-
return symbol.flags & SymbolFlags.LateBindingContainer ? getResolvedMembersOrExportsOfSymbol(symbol, MembersOrExportsResolutionKind.resolvedExports) :
3495+
return isLateBindingContainer(symbol) ? getResolvedMembersOrExportsOfSymbol(symbol, MembersOrExportsResolutionKind.resolvedExports) :
34763496
symbol.flags & SymbolFlags.Module ? getExportsOfModule(symbol) :
34773497
symbol.exports || emptySymbols;
34783498
}

src/compiler/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4642,7 +4642,7 @@ namespace ts {
46424642
Classifiable = Class | Enum | TypeAlias | Interface | TypeParameter | Module | Alias,
46434643

46444644
/* @internal */
4645-
LateBindingContainer = Class | Interface | TypeLiteral | ObjectLiteral | Function | Enum,
4645+
LateBindingContainer = Class | Interface | TypeLiteral | ObjectLiteral | Function,
46464646
}
46474647

46484648
/* @internal */
@@ -4707,6 +4707,7 @@ namespace ts {
47074707
typeOnlyDeclaration?: TypeOnlyCompatibleAliasDeclaration | false; // First resolved alias declaration that makes the symbol only usable in type constructs
47084708
isConstructorDeclaredProperty?: boolean; // Property declared through 'this.x = ...' assignment in constructor
47094709
tupleLabelDeclaration?: NamedTupleMember | ParameterDeclaration; // Declaration associated with the tuple's label
4710+
enumHasLateBoundMember?: boolean // True if enum declaration contains spread enum member
47104711
}
47114712

47124713
/* @internal */

0 commit comments

Comments
 (0)