diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt index b9ce44dcd32..7191cddb1e3 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassOrObject.kt @@ -157,7 +157,7 @@ internal open class SymbolLightClassForClassOrObject : SymbolLightClassForNamedC createConstructors(declaredMemberScope.getConstructors(), result) - addMethodsFromCompanionIfNeeded(result) + addMethodsFromCompanionIfNeeded(result, classOrObjectSymbol) addMethodsFromDataClass(result, classOrObjectSymbol) addDelegatesToInterfaceMethods(result, classOrObjectSymbol) @@ -346,5 +346,6 @@ internal open class SymbolLightClassForClassOrObject : SymbolLightClassForNamedC override fun isAnnotationType(): Boolean = false - override fun copy(): SymbolLightClassForClassOrObject = SymbolLightClassForClassOrObject(classOrObjectDeclaration, classOrObjectSymbolPointer, ktModule, manager) + override fun copy(): SymbolLightClassForClassOrObject = + SymbolLightClassForClassOrObject(classOrObjectDeclaration, classOrObjectSymbolPointer, ktModule, manager) } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterface.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterface.kt index 3503c560959..413a7d51da2 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterface.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterface.kt @@ -59,7 +59,7 @@ internal open class SymbolLightClassForInterface : SymbolLightClassForInterfaceO .filterNot { it is KtFunctionSymbol && it.visibility.isPrivateOrPrivateToThis() } createMethods(visibleDeclarations, result) - addMethodsFromCompanionIfNeeded(result) + addMethodsFromCompanionIfNeeded(result, classOrObjectSymbol) result } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForNamedClassLike.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForNamedClassLike.kt index dd2210cd6a6..5e238921f35 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForNamedClassLike.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForNamedClassLike.kt @@ -47,26 +47,30 @@ abstract class SymbolLightClassForNamedClassLike : SymbolLightClassForClassLike< manager = manager ) + context(KtAnalysisSession) protected fun addMethodsFromCompanionIfNeeded( result: MutableList, - ): Unit = withClassOrObjectSymbol { classOrObjectSymbol -> - classOrObjectSymbol.companionObject?.run { - val methods = getDeclaredMemberScope().getCallableSymbols() - .filterIsInstance() - .filter { it.hasJvmStaticAnnotation() } + classOrObjectSymbol: KtNamedClassOrObjectSymbol, + ) { + val companionObjectSymbol = classOrObjectSymbol.companionObject ?: return + val methods = companionObjectSymbol.getDeclaredMemberScope() + .getCallableSymbols() + .filterIsInstance() + .filter { it.hasJvmStaticAnnotation() } - createMethods(methods, result) + createMethods(methods, result) - val properties = getDeclaredMemberScope().getCallableSymbols().filterIsInstance() - properties.forEach { property -> + companionObjectSymbol.getDeclaredMemberScope() + .getCallableSymbols() + .filterIsInstance() + .forEach { property -> createPropertyAccessors( result, property, isTopLevel = false, - onlyJvmStatic = true + onlyJvmStatic = true, ) } - } } private val KtPropertySymbol.isConstOrJvmField: Boolean get() = isConst || hasJvmFieldAnnotation()