FIR LC: minor reordering of utils that add members
This commit is contained in:
committed by
Ilya Kirillov
parent
1ae7c2af21
commit
8c97f0c3a1
+42
-42
@@ -6,14 +6,14 @@
|
|||||||
package org.jetbrains.kotlin.light.classes.symbol
|
package org.jetbrains.kotlin.light.classes.symbol
|
||||||
|
|
||||||
import com.intellij.psi.*
|
import com.intellij.psi.*
|
||||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
|
||||||
import org.jetbrains.kotlin.descriptors.Visibility
|
|
||||||
import org.jetbrains.kotlin.analysis.api.isValid
|
import org.jetbrains.kotlin.analysis.api.isValid
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithVisibility
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithVisibility
|
||||||
|
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||||
|
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||||
|
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||||
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.light.classes.symbol.classes.*
|
import org.jetbrains.kotlin.light.classes.symbol.classes.*
|
||||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.applyIf
|
import org.jetbrains.kotlin.utils.addToStdlib.applyIf
|
||||||
@@ -109,6 +109,44 @@ internal class FirLightClassForSymbol(
|
|||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun addMethodsFromCompanionIfNeeded(result: MutableList<KtLightMethod>) {
|
||||||
|
classOrObjectSymbol.companionObject?.run {
|
||||||
|
analyzeWithSymbolAsContext(this) {
|
||||||
|
val methods = getDeclaredMemberScope().getCallableSymbols()
|
||||||
|
.filterIsInstance<KtFunctionSymbol>()
|
||||||
|
.filter { it.hasJvmStaticAnnotation() }
|
||||||
|
createMethods(methods, result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private val _ownFields: List<KtLightField> by lazyPub {
|
||||||
|
|
||||||
|
val result = mutableListOf<KtLightField>()
|
||||||
|
|
||||||
|
addCompanionObjectFieldIfNeeded(result)
|
||||||
|
addInstanceFieldIfNeeded(result)
|
||||||
|
|
||||||
|
addFieldsFromCompanionIfNeeded(result)
|
||||||
|
addPropertyBackingFields(result)
|
||||||
|
|
||||||
|
result
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun addInstanceFieldIfNeeded(result: MutableList<KtLightField>) {
|
||||||
|
val isNamedObject = classOrObjectSymbol.classKind == KtClassKind.OBJECT
|
||||||
|
if (isNamedObject && classOrObjectSymbol.symbolKind != KtSymbolKind.LOCAL) {
|
||||||
|
result.add(
|
||||||
|
FirLightFieldForObjectSymbol(
|
||||||
|
objectSymbol = classOrObjectSymbol,
|
||||||
|
containingClass = this@FirLightClassForSymbol,
|
||||||
|
name = JvmAbi.INSTANCE_FIELD,
|
||||||
|
lightMemberOrigin = null
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun addFieldsFromCompanionIfNeeded(result: MutableList<KtLightField>) {
|
private fun addFieldsFromCompanionIfNeeded(result: MutableList<KtLightField>) {
|
||||||
classOrObjectSymbol.companionObject?.run {
|
classOrObjectSymbol.companionObject?.run {
|
||||||
analyzeWithSymbolAsContext(this) {
|
analyzeWithSymbolAsContext(this) {
|
||||||
@@ -130,31 +168,6 @@ internal class FirLightClassForSymbol(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addMethodsFromCompanionIfNeeded(result: MutableList<KtLightMethod>) {
|
|
||||||
classOrObjectSymbol.companionObject?.run {
|
|
||||||
analyzeWithSymbolAsContext(this) {
|
|
||||||
val methods = getDeclaredMemberScope().getCallableSymbols()
|
|
||||||
.filterIsInstance<KtFunctionSymbol>()
|
|
||||||
.filter { it.hasJvmStaticAnnotation() }
|
|
||||||
createMethods(methods, result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun addInstanceFieldIfNeeded(result: MutableList<KtLightField>) {
|
|
||||||
val isNamedObject = classOrObjectSymbol.classKind == KtClassKind.OBJECT
|
|
||||||
if (isNamedObject && classOrObjectSymbol.symbolKind != KtSymbolKind.LOCAL) {
|
|
||||||
result.add(
|
|
||||||
FirLightFieldForObjectSymbol(
|
|
||||||
objectSymbol = classOrObjectSymbol,
|
|
||||||
containingClass = this@FirLightClassForSymbol,
|
|
||||||
name = JvmAbi.INSTANCE_FIELD,
|
|
||||||
lightMemberOrigin = null
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun addPropertyBackingFields(result: MutableList<KtLightField>) {
|
private fun addPropertyBackingFields(result: MutableList<KtLightField>) {
|
||||||
analyzeWithSymbolAsContext(classOrObjectSymbol) {
|
analyzeWithSymbolAsContext(classOrObjectSymbol) {
|
||||||
val propertySymbols = classOrObjectSymbol.getDeclaredMemberScope().getCallableSymbols()
|
val propertySymbols = classOrObjectSymbol.getDeclaredMemberScope().getCallableSymbols()
|
||||||
@@ -194,19 +207,6 @@ internal class FirLightClassForSymbol(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val _ownFields: List<KtLightField> by lazyPub {
|
|
||||||
|
|
||||||
val result = mutableListOf<KtLightField>()
|
|
||||||
|
|
||||||
addCompanionObjectFieldIfNeeded(result)
|
|
||||||
addInstanceFieldIfNeeded(result)
|
|
||||||
|
|
||||||
addFieldsFromCompanionIfNeeded(result)
|
|
||||||
addPropertyBackingFields(result)
|
|
||||||
|
|
||||||
result
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun hashCode(): Int = classOrObjectSymbol.hashCode()
|
override fun hashCode(): Int = classOrObjectSymbol.hashCode()
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean =
|
override fun equals(other: Any?): Boolean =
|
||||||
|
|||||||
Reference in New Issue
Block a user