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 b5e6dbbd350..6fb79be4441 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 @@ -31,6 +31,8 @@ import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmFieldAnnotati import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightField import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForEnumEntry import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForObject +import org.jetbrains.kotlin.light.classes.symbol.isConst +import org.jetbrains.kotlin.light.classes.symbol.isLateInit import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightSimpleMethod import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList import org.jetbrains.kotlin.load.java.JvmAbi @@ -278,8 +280,8 @@ internal open class SymbolLightClassForClassOrObject : SymbolLightClassForNamedC fun addPropertyBackingField(propertySymbol: KtPropertySymbol) { val isJvmField = propertySymbol.hasJvmFieldAnnotation() - val isLateInit = (propertySymbol as? KtKotlinPropertySymbol)?.isLateInit == true - val isConst = (propertySymbol as? KtKotlinPropertySymbol)?.isConst == true + val isLateInit = propertySymbol.isLateInit + val isConst = propertySymbol.isConst val forceStatic = isObject val takePropertyVisibility = isLateInit || isJvmField || isConst 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 3fb9c3f486e..fb1d615f993 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 @@ -9,7 +9,6 @@ import com.intellij.psi.PsiManager import com.intellij.psi.PsiModifier import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol -import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer @@ -17,10 +16,11 @@ import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.lexer.KtTokens -import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmFieldAnnotation import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmStaticAnnotation import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForObject import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForProperty +import org.jetbrains.kotlin.light.classes.symbol.isConstOrJvmField +import org.jetbrains.kotlin.light.classes.symbol.isLateInit import org.jetbrains.kotlin.light.classes.symbol.modifierLists.LazyModifiersBox import org.jetbrains.kotlin.light.classes.symbol.modifierLists.with import org.jetbrains.kotlin.light.classes.symbol.toPsiVisibilityForClass @@ -80,11 +80,6 @@ abstract class SymbolLightClassForNamedClassLike : SymbolLightClassForClassLike< } } - private val KtPropertySymbol.isConstOrJvmField: Boolean get() = isConst || hasJvmFieldAnnotation() - - private val KtPropertySymbol.isConst: Boolean get() = (this as? KtKotlinPropertySymbol)?.isConst == true - private val KtPropertySymbol.isLateInit: Boolean get() = (this as? KtKotlinPropertySymbol)?.isLateInit == true - private val isInner: Boolean get() = classOrObjectDeclaration?.hasModifier(KtTokens.INNER_KEYWORD) ?: withClassOrObjectSymbol { it.isInner } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt index aa111eaf808..3c67fa2751d 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/symbolLightUtils.kt @@ -12,6 +12,8 @@ import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.annotations.* import org.jetbrains.kotlin.analysis.api.base.KtConstantValue import org.jetbrains.kotlin.analysis.api.components.DefaultTypeClassIds +import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol +import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithModality import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithTypeParameters @@ -25,10 +27,7 @@ import org.jetbrains.kotlin.asJava.elements.psiType import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility -import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolLightSimpleAnnotation -import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolPsiArrayInitializerMemberValue -import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolPsiExpression -import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolPsiLiteral +import org.jetbrains.kotlin.light.classes.symbol.annotations.* import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.psi.KtTypeParameterListOwner @@ -265,3 +264,7 @@ internal inline fun KtSymbolPointer.withSymbol( ktModule: KtModule, crossinline action: KtAnalysisSession.(T) -> R, ): R = analyzeForLightClasses(ktModule) { action(this, restoreSymbolOrThrowIfDisposed()) } + +internal val KtPropertySymbol.isConstOrJvmField: Boolean get() = isConst || hasJvmFieldAnnotation() +internal val KtPropertySymbol.isConst: Boolean get() = (this as? KtKotlinPropertySymbol)?.isConst == true +internal val KtPropertySymbol.isLateInit: Boolean get() = (this as? KtKotlinPropertySymbol)?.isLateInit == true