mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-15 11:35:42 -06:00
Change the memberTypes of an EnumType to a (possibly sparse, but probably not ) array.
This commit is contained in:
parent
2622331c9c
commit
499ca7969c
@ -3868,15 +3868,15 @@ namespace ts {
|
||||
enumType.symbol = symbol;
|
||||
if (enumHasLiteralMembers(symbol)) {
|
||||
const memberTypeList: Type[] = [];
|
||||
const memberTypes = new NumberMap<number, EnumLiteralType>();
|
||||
const memberTypes: { [enumMemberValue: number]: EnumLiteralType } = [];
|
||||
for (const declaration of enumType.symbol.declarations) {
|
||||
if (declaration.kind === SyntaxKind.EnumDeclaration) {
|
||||
computeEnumMemberValues(<EnumDeclaration>declaration);
|
||||
for (const member of (<EnumDeclaration>declaration).members) {
|
||||
const memberSymbol = getSymbolOfNode(member);
|
||||
const value = getEnumMemberValue(member);
|
||||
if (!memberTypes.get(value)) {
|
||||
memberTypeList.push(setAndReturn(memberTypes, value, createEnumLiteralType(memberSymbol, enumType, "" + value)));
|
||||
if (!memberTypes[value]) {
|
||||
memberTypeList.push(memberTypes[value] = createEnumLiteralType(memberSymbol, enumType, "" + value));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3897,7 +3897,7 @@ namespace ts {
|
||||
if (!links.declaredType) {
|
||||
const enumType = <EnumType>getDeclaredTypeOfEnum(getParentOfSymbol(symbol));
|
||||
links.declaredType = enumType.flags & TypeFlags.Union ?
|
||||
enumType.memberTypes.get(getEnumMemberValue(<EnumDeclaration>symbol.valueDeclaration)) :
|
||||
enumType.memberTypes[getEnumMemberValue(<EnumDeclaration>symbol.valueDeclaration)] :
|
||||
enumType;
|
||||
}
|
||||
return links.declaredType;
|
||||
|
||||
@ -2483,7 +2483,7 @@ namespace ts {
|
||||
|
||||
// Enum types (TypeFlags.Enum)
|
||||
export interface EnumType extends Type {
|
||||
memberTypes: Map<number, EnumLiteralType>;
|
||||
memberTypes: { [enumMemberValue: number]: EnumLiteralType };
|
||||
}
|
||||
|
||||
// Enum types (TypeFlags.EnumLiteral)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user