[SLC] SymbolLightClassForNamedClassLike: cleanup addMethodsFromCompanionIfNeeded function

^KT-54051
This commit is contained in:
Dmitrii Gridin
2022-11-28 12:50:32 +01:00
committed by Space Team
parent ef9412e0aa
commit c9d1e2b0a2
3 changed files with 18 additions and 13 deletions
@@ -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)
}
@@ -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
}
@@ -47,26 +47,30 @@ abstract class SymbolLightClassForNamedClassLike : SymbolLightClassForClassLike<
manager = manager
)
context(KtAnalysisSession)
protected fun addMethodsFromCompanionIfNeeded(
result: MutableList<KtLightMethod>,
): Unit = withClassOrObjectSymbol { classOrObjectSymbol ->
classOrObjectSymbol.companionObject?.run {
val methods = getDeclaredMemberScope().getCallableSymbols()
.filterIsInstance<KtFunctionSymbol>()
.filter { it.hasJvmStaticAnnotation() }
classOrObjectSymbol: KtNamedClassOrObjectSymbol,
) {
val companionObjectSymbol = classOrObjectSymbol.companionObject ?: return
val methods = companionObjectSymbol.getDeclaredMemberScope()
.getCallableSymbols()
.filterIsInstance<KtFunctionSymbol>()
.filter { it.hasJvmStaticAnnotation() }
createMethods(methods, result)
createMethods(methods, result)
val properties = getDeclaredMemberScope().getCallableSymbols().filterIsInstance<KtPropertySymbol>()
properties.forEach { property ->
companionObjectSymbol.getDeclaredMemberScope()
.getCallableSymbols()
.filterIsInstance<KtPropertySymbol>()
.forEach { property ->
createPropertyAccessors(
result,
property,
isTopLevel = false,
onlyJvmStatic = true
onlyJvmStatic = true,
)
}
}
}
private val KtPropertySymbol.isConstOrJvmField: Boolean get() = isConst || hasJvmFieldAnnotation()