@@ -2790,16 +2790,19 @@ namespace ts {
27902790 if (symbol) {
27912791 if (companionSymbolCache.has(symbol)) {
27922792 result = symbol;
2793+ getSymbolLinks(symbol).isPossibleCompanionReference = true;
27932794 break loop;
27942795 }
27952796 if (symbol.exportSymbol && companionSymbolCache.has(symbol.exportSymbol)) {
27962797 result = symbol.exportSymbol;
2798+ getSymbolLinks(symbol.exportSymbol).isPossibleCompanionReference = true;
27972799 break loop;
27982800 }
27992801 if (symbol.declarations && symbol.declarations[0] && isImportSpecifier(symbol.declarations[0])) {
28002802 const originalSymbol = getTargetOfImportSpecifier(symbol.declarations[0], false);
28012803 if (originalSymbol && companionSymbolCache.has(originalSymbol)) {
28022804 result = originalSymbol;
2805+ getSymbolLinks(originalSymbol).isPossibleCompanionReference = true;
28032806 symbol.isReferenced = SymbolFlags.Value;
28042807 break loop;
28052808 }
@@ -5837,8 +5840,21 @@ namespace ts {
58375840 if (!type) {
58385841 return false
58395842 }
5840- return !!(getObjectFlags(type) & ObjectFlags.Anonymous && type.symbol && type.symbol.flags & SymbolFlags.Class)
5841- || (!!symbol?.declarations?.[0] && (isInterfaceDeclaration(symbol.declarations[0]) || isTypeAliasDeclaration(symbol.declarations[0])))
5843+
5844+ // Class companion object
5845+ if (getObjectFlags(type) & ObjectFlags.Anonymous && type.symbol && type.symbol.flags & SymbolFlags.Class) {
5846+ return true
5847+ }
5848+
5849+ // Synthetic Interface or TypeAlias companion object
5850+ if (symbol && symbol.declarations && symbol.declarations.length > 0) {
5851+ const declaration = symbol.declarations[0]
5852+ if (isInterfaceDeclaration(declaration) || isTypeAliasDeclaration(declaration)) {
5853+ return !!getSymbolLinks(symbol).isPossibleCompanionReference;
5854+ }
5855+ }
5856+
5857+ return false
58425858 }
58435859 // TSPLUS EXTENSION END
58445860
0 commit comments