[SLC] SymbolLightClassForNamedClassLike: cleanup addMethodsFromCompanionIfNeeded function
^KT-54051
This commit is contained in:
committed by
Space Team
parent
ef9412e0aa
commit
c9d1e2b0a2
+3
-2
@@ -157,7 +157,7 @@ internal open class SymbolLightClassForClassOrObject : SymbolLightClassForNamedC
|
|||||||
createConstructors(declaredMemberScope.getConstructors(), result)
|
createConstructors(declaredMemberScope.getConstructors(), result)
|
||||||
|
|
||||||
|
|
||||||
addMethodsFromCompanionIfNeeded(result)
|
addMethodsFromCompanionIfNeeded(result, classOrObjectSymbol)
|
||||||
|
|
||||||
addMethodsFromDataClass(result, classOrObjectSymbol)
|
addMethodsFromDataClass(result, classOrObjectSymbol)
|
||||||
addDelegatesToInterfaceMethods(result, classOrObjectSymbol)
|
addDelegatesToInterfaceMethods(result, classOrObjectSymbol)
|
||||||
@@ -346,5 +346,6 @@ internal open class SymbolLightClassForClassOrObject : SymbolLightClassForNamedC
|
|||||||
|
|
||||||
override fun isAnnotationType(): Boolean = false
|
override fun isAnnotationType(): Boolean = false
|
||||||
|
|
||||||
override fun copy(): SymbolLightClassForClassOrObject = SymbolLightClassForClassOrObject(classOrObjectDeclaration, classOrObjectSymbolPointer, ktModule, manager)
|
override fun copy(): SymbolLightClassForClassOrObject =
|
||||||
|
SymbolLightClassForClassOrObject(classOrObjectDeclaration, classOrObjectSymbolPointer, ktModule, manager)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -59,7 +59,7 @@ internal open class SymbolLightClassForInterface : SymbolLightClassForInterfaceO
|
|||||||
.filterNot { it is KtFunctionSymbol && it.visibility.isPrivateOrPrivateToThis() }
|
.filterNot { it is KtFunctionSymbol && it.visibility.isPrivateOrPrivateToThis() }
|
||||||
|
|
||||||
createMethods(visibleDeclarations, result)
|
createMethods(visibleDeclarations, result)
|
||||||
addMethodsFromCompanionIfNeeded(result)
|
addMethodsFromCompanionIfNeeded(result, classOrObjectSymbol)
|
||||||
|
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-10
@@ -47,26 +47,30 @@ abstract class SymbolLightClassForNamedClassLike : SymbolLightClassForClassLike<
|
|||||||
manager = manager
|
manager = manager
|
||||||
)
|
)
|
||||||
|
|
||||||
|
context(KtAnalysisSession)
|
||||||
protected fun addMethodsFromCompanionIfNeeded(
|
protected fun addMethodsFromCompanionIfNeeded(
|
||||||
result: MutableList<KtLightMethod>,
|
result: MutableList<KtLightMethod>,
|
||||||
): Unit = withClassOrObjectSymbol { classOrObjectSymbol ->
|
classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||||
classOrObjectSymbol.companionObject?.run {
|
) {
|
||||||
val methods = getDeclaredMemberScope().getCallableSymbols()
|
val companionObjectSymbol = classOrObjectSymbol.companionObject ?: return
|
||||||
.filterIsInstance<KtFunctionSymbol>()
|
val methods = companionObjectSymbol.getDeclaredMemberScope()
|
||||||
.filter { it.hasJvmStaticAnnotation() }
|
.getCallableSymbols()
|
||||||
|
.filterIsInstance<KtFunctionSymbol>()
|
||||||
|
.filter { it.hasJvmStaticAnnotation() }
|
||||||
|
|
||||||
createMethods(methods, result)
|
createMethods(methods, result)
|
||||||
|
|
||||||
val properties = getDeclaredMemberScope().getCallableSymbols().filterIsInstance<KtPropertySymbol>()
|
companionObjectSymbol.getDeclaredMemberScope()
|
||||||
properties.forEach { property ->
|
.getCallableSymbols()
|
||||||
|
.filterIsInstance<KtPropertySymbol>()
|
||||||
|
.forEach { property ->
|
||||||
createPropertyAccessors(
|
createPropertyAccessors(
|
||||||
result,
|
result,
|
||||||
property,
|
property,
|
||||||
isTopLevel = false,
|
isTopLevel = false,
|
||||||
onlyJvmStatic = true
|
onlyJvmStatic = true,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private val KtPropertySymbol.isConstOrJvmField: Boolean get() = isConst || hasJvmFieldAnnotation()
|
private val KtPropertySymbol.isConstOrJvmField: Boolean get() = isConst || hasJvmFieldAnnotation()
|
||||||
|
|||||||
Reference in New Issue
Block a user