@@ -12284,29 +12284,30 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
1228412284 function getTypeOfSymbol(symbol: Symbol): Type {
1228512285 const checkFlags = getCheckFlags(symbol);
1228612286
12287- const checkFlagMap = new Map([
12287+ // Prioritize check flags
12288+ const checkFlagChecks: [CheckFlags, (s: Symbol) => Type][] = [
1228812289 [CheckFlags.DeferredType, getTypeOfSymbolWithDeferredType],
1228912290 [CheckFlags.Instantiated, getTypeOfInstantiatedSymbol],
12290- [CheckFlags.Mapped, (s: Symbol) => getTypeOfMappedSymbol(s as MappedSymbol)],
12291- [CheckFlags.ReverseMapped, (s: Symbol) => getTypeOfReverseMappedSymbol(s as ReverseMappedSymbol)],
12292- ]) ;
12291+ [CheckFlags.Mapped, s => getTypeOfMappedSymbol(s as MappedSymbol)],
12292+ [CheckFlags.ReverseMapped, s => getTypeOfReverseMappedSymbol(s as ReverseMappedSymbol)],
12293+ ];
1229312294
12294- for (const [flag, fn] of checkFlagMap ) {
12295+ for (const [flag, fn] of checkFlagChecks ) {
1229512296 if (checkFlags & flag) return fn(symbol);
1229612297 }
1229712298
12298- const symbolFlagMap = new Map([
12299+ // Handle symbol flags
12300+ const symbolChecks: [SymbolFlags, (s: Symbol) => Type][] = [
1229912301 [SymbolFlags.Variable | SymbolFlags.Property, getTypeOfVariableOrParameterOrProperty],
1230012302 [SymbolFlags.Function | SymbolFlags.Method | SymbolFlags.Class | SymbolFlags.Enum | SymbolFlags.ValueModule, getTypeOfFuncClassEnumModule],
1230112303 [SymbolFlags.EnumMember, getTypeOfEnumMember],
1230212304 [SymbolFlags.Accessor, getTypeOfAccessors],
1230312305 [SymbolFlags.Alias, getTypeOfAlias],
12304- ]) ;
12306+ ];
1230512307
12306- for (const [flag, fn] of symbolFlagMap ) {
12307- if (symbol.flags & flag) return fn(symbol);
12308+ for (const [flag, fn] of symbolChecks ) {
12309+ if (( symbol.flags & flag) !== 0 ) return fn(symbol);
1230812310 }
12309-
1231012311 return errorType;
1231112312 }
1231212313
0 commit comments