diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticPsiDeclarationFromBinaryModuleProvider.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticPsiDeclarationFromBinaryModuleProvider.kt index 446245c586f..bab298cf8b1 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticPsiDeclarationFromBinaryModuleProvider.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticPsiDeclarationFromBinaryModuleProvider.kt @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.analysis.providers.KotlinPsiDeclarationProvider import org.jetbrains.kotlin.analysis.providers.KotlinPsiDeclarationProviderFactory import org.jetbrains.kotlin.analysis.providers.createPackagePartProvider import org.jetbrains.kotlin.asJava.builder.ClsWrapperStubPsiFactory +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.load.kotlin.PackagePartProvider import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.ClassId @@ -31,7 +32,7 @@ private class KotlinStaticPsiDeclarationFromBinaryModuleProvider( private val binaryModules: Collection, override val jarFileSystem: CoreJarFileSystem, ) : KotlinPsiDeclarationProvider(), AbstractDeclarationFromBinaryModuleProvider { - private val psiManager by lazy { PsiManager.getInstance(project) } + private val psiManager by lazyPub { PsiManager.getInstance(project) } private fun clsClassImplsByFqName( fqName: FqName, diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolAnnotationParameterList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolAnnotationParameterList.kt index 9b8f9b78209..906aa443ebc 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolAnnotationParameterList.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolAnnotationParameterList.kt @@ -45,7 +45,7 @@ private class SymbolNameValuePairForAnnotationArgument( override fun setValue(p0: PsiAnnotationMemberValue) = cannotModify() - private val _nameIdentifier: PsiIdentifier by lazy { + private val _nameIdentifier: PsiIdentifier by lazyPub { LightIdentifier(parent.manager, constantValue.name.asString()) } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightAnnotationForAnnotationCall.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightAnnotationForAnnotationCall.kt index 3ee03b21c5b..bef891167e1 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightAnnotationForAnnotationCall.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightAnnotationForAnnotationCall.kt @@ -11,6 +11,7 @@ import com.intellij.psi.PsiAnnotationParameterList import com.intellij.psi.PsiElement import com.intellij.psi.impl.PsiImplUtil import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplication +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.light.classes.symbol.basicIsEquivalentTo import org.jetbrains.kotlin.psi.KtCallElement @@ -25,7 +26,7 @@ internal class SymbolLightAnnotationForAnnotationCall( override fun findDeclaredAttributeValue(attributeName: String?) = PsiImplUtil.findDeclaredAttributeValue(this, attributeName) - private val _parameterList: PsiAnnotationParameterList by lazy { + private val _parameterList: PsiAnnotationParameterList by lazyPub { SymbolAnnotationParameterList(this, annotationCall.arguments) } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightSimpleAnnotation.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightSimpleAnnotation.kt index 998918a02a6..ff57f4da3fc 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightSimpleAnnotation.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/annotations/SymbolLightSimpleAnnotation.kt @@ -10,6 +10,7 @@ import com.intellij.psi.PsiAnnotationParameterList import com.intellij.psi.PsiElement import com.intellij.psi.impl.PsiImplUtil import org.jetbrains.kotlin.analysis.api.annotations.KtNamedAnnotationValue +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.psi.KtCallElement internal class SymbolLightSimpleAnnotation( @@ -35,7 +36,7 @@ internal class SymbolLightSimpleAnnotation( override fun findDeclaredAttributeValue(attributeName: String?) = PsiImplUtil.findDeclaredAttributeValue(this, attributeName) - private val _parameterList: PsiAnnotationParameterList by lazy { + private val _parameterList: PsiAnnotationParameterList by lazyPub { SymbolAnnotationParameterList(this, arguments) } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolBasedFakeLightClass.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolBasedFakeLightClass.kt index 18a107540fb..a175544335b 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolBasedFakeLightClass.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolBasedFakeLightClass.kt @@ -9,6 +9,7 @@ import com.intellij.psi.PsiClass import org.jetbrains.kotlin.asJava.classes.KtFakeLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.LightClassInheritanceHelper +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.light.classes.symbol.analyzeForLightClasses import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject @@ -16,7 +17,7 @@ import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject class SymbolBasedFakeLightClass(kotlinOrigin: KtClassOrObject) : KtFakeLightClass(kotlinOrigin) { override fun copy(): KtFakeLightClass = SymbolBasedFakeLightClass(kotlinOrigin) - private val _containingClass: KtFakeLightClass? by lazy { + private val _containingClass: KtFakeLightClass? by lazyPub { kotlinOrigin.containingClassOrObject?.let { SymbolBasedFakeLightClass(it) } } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt index 5da4dba557e..72decb67459 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt @@ -62,49 +62,49 @@ abstract class SymbolLightClassForClassLike prote protected fun withClassOrObjectSymbol(action: KtAnalysisSession.(SType) -> T): T = classOrObjectSymbolPointer.withSymbol(ktModule, action) - override val isTopLevel: Boolean by lazy { + override val isTopLevel: Boolean by lazyPub { classOrObjectDeclaration?.isTopLevel() ?: withClassOrObjectSymbol { it.symbolKind == KtSymbolKind.TOP_LEVEL } } - internal val isCompanionObject: Boolean by lazy { + internal val isCompanionObject: Boolean by lazyPub { classOrObjectDeclaration?.let { it is KtObjectDeclaration && it.isCompanion() } ?: withClassOrObjectSymbol { it.classKind == KtClassKind.COMPANION_OBJECT } } - internal val isLocal: Boolean by lazy { + internal val isLocal: Boolean by lazyPub { classOrObjectDeclaration?.isLocal ?: withClassOrObjectSymbol { it.symbolKind == KtSymbolKind.LOCAL } } - internal val isNamedObject: Boolean by lazy { + internal val isNamedObject: Boolean by lazyPub { classOrObjectDeclaration?.let { it is KtObjectDeclaration && !it.isCompanion() } ?: withClassOrObjectSymbol { it.classKind == KtClassKind.OBJECT } } - internal val isObject: Boolean by lazy { + internal val isObject: Boolean by lazyPub { classOrObjectDeclaration?.let { it is KtObjectDeclaration } ?: withClassOrObjectSymbol { it.classKind.isObject } } - internal val isInterface: Boolean by lazy { + internal val isInterface: Boolean by lazyPub { classOrObjectDeclaration?.let { it is KtClass && it.isInterface() } ?: withClassOrObjectSymbol { it.classKind == KtClassKind.INTERFACE } } - internal val isAnnotation: Boolean by lazy { + internal val isAnnotation: Boolean by lazyPub { classOrObjectDeclaration?.let { it is KtClass && it.isAnnotation() } ?: withClassOrObjectSymbol { it.classKind == KtClassKind.ANNOTATION_CLASS } } - internal val isEnum: Boolean by lazy { + internal val isEnum: Boolean by lazyPub { classOrObjectDeclaration?.let { it is KtClass && it.isEnum() } ?: withClassOrObjectSymbol { it.classKind == KtClassKind.ENUM_CLASS } } - private val _isDeprecated: Boolean by lazy { + private val _isDeprecated: Boolean by lazyPub { withClassOrObjectSymbol { it.hasDeprecatedAnnotation() } } @@ -114,7 +114,7 @@ abstract class SymbolLightClassForClassLike prote abstract override fun getOwnFields(): List abstract override fun getOwnMethods(): List - private val _identifier: PsiIdentifier by lazy { + private val _identifier: PsiIdentifier by lazyPub { KtLightIdentifier(this, classOrObjectDeclaration) } @@ -123,7 +123,7 @@ abstract class SymbolLightClassForClassLike prote abstract override fun getExtendsList(): PsiReferenceList? abstract override fun getImplementsList(): PsiReferenceList? - private val _typeParameterList: PsiTypeParameterList? by lazy { + private val _typeParameterList: PsiTypeParameterList? by lazyPub { hasTypeParameters().ifTrue { SymbolLightTypeParameterList( owner = this, 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 998a5a7c540..b9ce44dcd32 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 @@ -85,8 +85,8 @@ internal open class SymbolLightClassForClassOrObject : SymbolLightClassForNamedC manager = manager, ) - private val _modifierList: PsiModifierList? by lazy { - val lazyModifiers = lazy { + private val _modifierList: PsiModifierList? by lazyPub { + val lazyModifiers = lazyPub { withClassOrObjectSymbol { classOrObjectSymbol -> buildSet { add(classOrObjectSymbol.toPsiVisibilityForClass(isNested = !isTopLevel)) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForEnumEntry.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForEnumEntry.kt index 0a9b114f2c4..ebdc9f18d6c 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForEnumEntry.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForEnumEntry.kt @@ -44,7 +44,7 @@ internal class SymbolLightClassForEnumEntry( override fun toString(): String = "SymbolLightClassForEnumEntry:$name" - private val _modifierList: PsiModifierList by lazy { + private val _modifierList: PsiModifierList by lazyPub { SymbolLightClassModifierList( containingDeclaration = this, lazyModifiers = lazyOf(setOf(PsiModifier.STATIC, PsiModifier.FINAL)), diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt index 3ad51026002..1ac615199bb 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt @@ -62,11 +62,11 @@ class SymbolLightClassForFacade( action(files.map { it.getFileSymbol() }) } - private val firstFileInFacade by lazy { files.first() } + private val firstFileInFacade by lazyPub { files.first() } - private val _modifierList: PsiModifierList by lazy { + private val _modifierList: PsiModifierList by lazyPub { if (multiFileClass) - return@lazy LightModifierList(manager, KotlinLanguage.INSTANCE, PsiModifier.PUBLIC, PsiModifier.FINAL) + return@lazyPub LightModifierList(manager, KotlinLanguage.INSTANCE, PsiModifier.PUBLIC, PsiModifier.FINAL) val lazyModifiers = lazyOf(setOf(PsiModifier.PUBLIC, PsiModifier.FINAL)) @@ -111,7 +111,7 @@ class SymbolLightClassForFacade( } } - private val multiFileClass: Boolean by lazy { + private val multiFileClass: Boolean by lazyPub { files.size > 1 || firstFileInFacade.isJvmMultifileClassFile } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceDefaultImpls.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceDefaultImpls.kt index 81bc0331d2e..c3b80474b81 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceDefaultImpls.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceDefaultImpls.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.light.classes.symbol.classes import com.intellij.psi.* import com.intellij.util.IncorrectOperationException +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList import org.jetbrains.kotlin.load.java.JvmAbi @@ -32,7 +33,7 @@ internal class SymbolLightClassForInterfaceDefaultImpls(private val containingCl override fun getTypeParameterList(): PsiTypeParameterList? = null override fun getTypeParameters(): Array = emptyArray() - private val _modifierList: PsiModifierList? by lazy { + private val _modifierList: PsiModifierList? by lazyPub { val lazyModifiers = lazyOf(setOf(PsiModifier.PUBLIC, PsiModifier.STATIC, PsiModifier.FINAL)) val lazyAnnotations = lazyOf(emptyList()) SymbolLightClassModifierList(this, lazyModifiers, lazyAnnotations) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt index 1059cc53df4..6859945ad3a 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForInterfaceOrAnnotationClass.kt @@ -64,8 +64,8 @@ internal abstract class SymbolLightClassForInterfaceOrAnnotationClass : SymbolLi manager = manager, ) - private val _modifierList: PsiModifierList? by lazy { - val lazyModifiers = lazy { + private val _modifierList: PsiModifierList? by lazyPub { + val lazyModifiers = lazyPub { withClassOrObjectSymbol { classOrObjectSymbol -> buildSet { add(classOrObjectSymbol.toPsiVisibilityForClass(isNested = !isTopLevel)) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightField.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightField.kt index b37eb010c9e..5ccf425a2d6 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightField.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightField.kt @@ -14,6 +14,7 @@ import com.intellij.util.PlatformIcons import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin import org.jetbrains.kotlin.asJava.classes.cannotModify +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier import org.jetbrains.kotlin.idea.KotlinLanguage @@ -36,7 +37,7 @@ internal abstract class SymbolLightField protected constructor( override fun hasInitializer(): Boolean = initializer !== null - private val _identifier: PsiIdentifier by lazy { + private val _identifier: PsiIdentifier by lazyPub { KtLightIdentifier(this, kotlinOrigin) } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForEnumEntry.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForEnumEntry.kt index 83235d771be..97f8313bafa 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForEnumEntry.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForEnumEntry.kt @@ -30,7 +30,7 @@ internal class SymbolLightFieldForEnumEntry( action(enumEntry.getEnumEntrySymbol()) } - private val _modifierList by lazy { + private val _modifierList by lazyPub { SymbolLightMemberModifierList( containingDeclaration = this@SymbolLightFieldForEnumEntry, lazyModifiers = lazyOf(setOf(PsiModifier.STATIC, PsiModifier.FINAL, PsiModifier.PUBLIC)), @@ -54,7 +54,7 @@ internal class SymbolLightFieldForEnumEntry( private val hasBody: Boolean get() = enumEntry.body != null - private val _initializingClass: PsiEnumConstantInitializer? by lazy { + private val _initializingClass: PsiEnumConstantInitializer? by lazyPub { hasBody.ifTrue { SymbolLightClassForEnumEntry( enumConstant = this@SymbolLightFieldForEnumEntry, diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForObject.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForObject.kt index abbc8db9f1e..a226f2264bb 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForObject.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForObject.kt @@ -49,14 +49,14 @@ internal class SymbolLightFieldForObject private constructor( override fun getName(): String = name - private val _modifierList: PsiModifierList by lazy { - val lazyModifiers = lazy { + private val _modifierList: PsiModifierList by lazyPub { + val lazyModifiers = lazyPub { withObjectDeclarationSymbol { objectSymbol -> setOf(objectSymbol.toPsiVisibilityForMember(), PsiModifier.STATIC, PsiModifier.FINAL) } } - val lazyAnnotations = lazy { + val lazyAnnotations = lazyPub { val notNullAnnotation = SymbolLightSimpleAnnotation(NotNull::class.java.name, this) listOf(notNullAnnotation) } @@ -64,7 +64,7 @@ internal class SymbolLightFieldForObject private constructor( SymbolLightMemberModifierList(this, lazyModifiers, lazyAnnotations) } - private val _isDeprecated: Boolean by lazy { + private val _isDeprecated: Boolean by lazyPub { withObjectDeclarationSymbol { objectSymbol -> objectSymbol.hasDeprecatedAnnotation() } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForProperty.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForProperty.kt index 6e055eb8032..d9dc03f506c 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForProperty.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightFieldForProperty.kt @@ -76,7 +76,7 @@ internal class SymbolLightFieldForProperty private constructor( } } - private val _isDeprecated: Boolean by lazy { + private val _isDeprecated: Boolean by lazyPub { withPropertySymbol { propertySymbol -> propertySymbol.hasDeprecatedAnnotation(AnnotationUseSiteTarget.FIELD) } @@ -131,7 +131,7 @@ internal class SymbolLightFieldForProperty private constructor( ) } - private val _modifierList: PsiModifierList by lazy { + private val _modifierList: PsiModifierList by lazyPub { val lazyModifiers = lazyPub { computeModifiers() } val lazyAnnotations = lazyPub { computeAnnotations() } SymbolLightMemberModifierList(this, lazyModifiers, lazyAnnotations) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt index 95d22600261..c48c32902c4 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightAccessorMethod.kt @@ -103,7 +103,7 @@ internal class SymbolLightAccessorMethod private constructor( override fun getName(): String = _name - private val _typeParameterList: PsiTypeParameterList? by lazy { + private val _typeParameterList: PsiTypeParameterList? by lazyPub { hasTypeParameters().ifTrue { SymbolLightTypeParameterList( owner = this, @@ -183,7 +183,7 @@ internal class SymbolLightAccessorMethod private constructor( modifiers } - private val _modifierList: PsiModifierList by lazy { + private val _modifierList: PsiModifierList by lazyPub { val lazyModifiers = lazyPub { computeModifiers() } val lazyAnnotations = lazyPub { computeAnnotations(PsiModifier.PRIVATE in lazyModifiers.value) } SymbolLightMemberModifierList(this, lazyModifiers, lazyAnnotations) @@ -193,7 +193,7 @@ internal class SymbolLightAccessorMethod private constructor( override fun isConstructor(): Boolean = false - private val _isDeprecated: Boolean by lazy { + private val _isDeprecated: Boolean by lazyPub { analyzeForLightClasses(ktModule) { propertySymbol().hasDeprecatedAnnotation(accessorSite) } @@ -201,7 +201,7 @@ internal class SymbolLightAccessorMethod private constructor( override fun isDeprecated(): Boolean = _isDeprecated - private val _identifier: PsiIdentifier by lazy { + private val _identifier: PsiIdentifier by lazyPub { KtLightIdentifier(this, containingPropertyDeclaration) } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt index 71e8566e9c1..8f2a6869310 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightConstructor.kt @@ -43,7 +43,7 @@ internal class SymbolLightConstructor( override fun getTypeParameterList(): PsiTypeParameterList? = null override fun getTypeParameters(): Array = PsiTypeParameter.EMPTY_ARRAY - private val _modifierList: PsiModifierList by lazy { + private val _modifierList: PsiModifierList by lazyPub { val lazyAnnotations: Lazy> = lazyPub { withFunctionSymbol { constructorSymbol -> constructorSymbol.computeAnnotations( @@ -54,7 +54,7 @@ internal class SymbolLightConstructor( } } - val lazyModifiers: Lazy> = lazy { + val lazyModifiers: Lazy> = lazyPub { // FIR treats an enum entry as an anonymous object w/ its own ctor (not default one). // On the other hand, FE 1.0 doesn't add anything; then ULC adds default ctor w/ package local visibility. // Technically, an enum entry should not be instantiated anywhere else, and thus FIR's modeling makes sense. diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethod.kt index bf4f59fbd2d..58f6e6f8464 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightMethod.kt @@ -63,7 +63,7 @@ internal abstract class SymbolLightMethod private protected fun withFunctionSymbol(action: KtAnalysisSession.(FType) -> T): T = functionSymbolPointer.withSymbol(ktModule, action) - private val _isVarArgs: Boolean by lazy { + private val _isVarArgs: Boolean by lazyPub { functionDeclaration?.valueParameters?.any { it.isVarArg } ?: withFunctionSymbol { functionSymbol -> functionSymbol.valueParameters.any { it.isVararg } } @@ -103,11 +103,11 @@ internal abstract class SymbolLightMethod private } } - private val _identifier: PsiIdentifier by lazy { - KtLightIdentifier(this@SymbolLightMethod, functionDeclaration) + private val _identifier: PsiIdentifier by lazyPub { + KtLightIdentifier(this, functionDeclaration) } - private val _isDeprecated: Boolean by lazy { + private val _isDeprecated: Boolean by lazyPub { withFunctionSymbol { functionSymbol -> functionSymbol.hasDeprecatedAnnotation() } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightNoArgConstructor.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightNoArgConstructor.kt index 0ff353ce08a..df3a815ee7b 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightNoArgConstructor.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightNoArgConstructor.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.light.classes.symbol.methods import com.intellij.psi.* import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassForClassLike import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList @@ -26,7 +27,7 @@ internal class SymbolLightNoArgConstructor( override fun getTypeParameterList(): PsiTypeParameterList? = null override fun getTypeParameters(): Array = PsiTypeParameter.EMPTY_ARRAY - private val _identifier: PsiIdentifier by lazy { + private val _identifier: PsiIdentifier by lazyPub { KtLightIdentifier(this, ktDeclaration = null) } @@ -34,13 +35,13 @@ internal class SymbolLightNoArgConstructor( override fun isDeprecated(): Boolean = false - private val _modifierList: PsiModifierList by lazy { + private val _modifierList: PsiModifierList by lazyPub { SymbolLightMemberModifierList(this, lazyOf(setOf(visibility)), lazyOf(emptyList())) } override fun getModifierList(): PsiModifierList = _modifierList - private val _parameterList: PsiParameterList by lazy { + private val _parameterList: PsiParameterList by lazyPub { SymbolLightParameterList(parent = this) } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt index 4c3ec8d4926..f9cca84510f 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/methods/SymbolLightSimpleMethod.kt @@ -119,7 +119,7 @@ internal class SymbolLightSimpleMethod( return modifiers } - private val _modifierList: PsiModifierList by lazy { + private val _modifierList: PsiModifierList by lazyPub { val lazyModifiers = lazyPub { withFunctionSymbol { functionSymbol -> computeModifiers(functionSymbol) diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightClassModifierList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightClassModifierList.kt index 3ead563c123..473c47548e6 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightClassModifierList.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightClassModifierList.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.light.classes.symbol.modifierLists import com.intellij.psi.PsiAnnotation import com.intellij.psi.PsiModifierListOwner +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation import org.jetbrains.kotlin.asJava.elements.KtLightElement import org.jetbrains.kotlin.asJava.elements.KtLightElementBase @@ -18,7 +19,7 @@ internal class SymbolLightClassModifierList>, lazyAnnotations: Lazy>, ) : SymbolLightModifierList(containingDeclaration) { - private val lazyAnnotations: Lazy> = lazy { + private val lazyAnnotations: Lazy> = lazyPub { lazyAnnotations.value.onEach { (it as? KtLightElementBase)?.parent = this } } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightMemberModifierList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightMemberModifierList.kt index 267e2ec785b..0d84919985d 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightMemberModifierList.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightMemberModifierList.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.light.classes.symbol.modifierLists import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiAnnotation import com.intellij.psi.PsiModifier +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation import org.jetbrains.kotlin.asJava.elements.KtLightElementBase import org.jetbrains.kotlin.asJava.elements.KtLightMember @@ -22,7 +23,7 @@ internal class SymbolLightMemberModifierList>( private val lazyModifiers: Lazy>, lazyAnnotations: Lazy> ) : SymbolLightModifierList(containingDeclaration) { - private val lazyAnnotations: Lazy> = lazy { + private val lazyAnnotations: Lazy> = lazyPub { lazyAnnotations.value.onEach { (it as? KtLightElementBase)?.parent = this } } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameter.kt index d23f7a2bfc9..6f6ec2c7dc3 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameter.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameter.kt @@ -27,7 +27,7 @@ internal class SymbolLightParameter( override fun getModifierList(): PsiModifierList = _modifierList - private val _modifierList: PsiModifierList by lazy { + private val _modifierList: PsiModifierList by lazyPub { val lazyAnnotations: Lazy> = lazyPub { val annotationSite = isConstructorParameterSymbol.ifTrue { AnnotationUseSiteTarget.CONSTRUCTOR_PARAMETER @@ -48,7 +48,7 @@ internal class SymbolLightParameter( SymbolLightClassModifierList(this, lazyOf(emptySet()), lazyAnnotations) } - private val isVararg: Boolean by lazy { + private val isVararg: Boolean by lazyPub { parameterSymbolPointer.withSymbol(ktModule) { it.isVararg } } diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterCommon.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterCommon.kt index 4bdf3d69a54..ceacc68ff3a 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterCommon.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterCommon.kt @@ -35,7 +35,7 @@ internal abstract class SymbolLightParameterCommon( kotlinOrigin = parameterSymbol.psiSafe(), ) - private val _name: String by lazy { + private val _name: String by lazyPub { parameterSymbolPointer.withSymbol(ktModule) { it.name.asString() } @@ -47,7 +47,7 @@ internal abstract class SymbolLightParameterCommon( abstract override fun getModifierList(): PsiModifierList - private val _identifier: PsiIdentifier by lazy { + private val _identifier: PsiIdentifier by lazyPub { KtLightIdentifier(this, parameterDeclaration) } @@ -64,7 +64,7 @@ internal abstract class SymbolLightParameterCommon( override fun getNameIdentifier(): PsiIdentifier = _identifier - private val _type by lazy { + private val _type by lazyPub { parameterSymbolPointer.withSymbol(ktModule) { parameterSymbol -> val convertedType = run { val ktType = parameterSymbol.returnType diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterForReceiver.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterForReceiver.kt index 3d0326940da..1efba01c316 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterForReceiver.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterForReceiver.kt @@ -53,7 +53,7 @@ internal class SymbolLightParameterForReceiver private constructor( } } - private val _name: String by lazy { + private val _name: String by lazyPub { AsmUtil.getLabeledThisName(methodName, AsmUtil.LABELED_THIS_PARAMETER, AsmUtil.RECEIVER_PARAMETER_NAME) } @@ -68,7 +68,7 @@ internal class SymbolLightParameterForReceiver private constructor( override fun getModifierList(): PsiModifierList = _modifierList - private val _modifierList: PsiModifierList by lazy { + private val _modifierList: PsiModifierList by lazyPub { val lazyAnnotations: Lazy> = lazyPub { withReceiverSymbol { receiver -> buildList { @@ -83,7 +83,7 @@ internal class SymbolLightParameterForReceiver private constructor( SymbolLightClassModifierList(this, lazyOf(emptySet()), lazyAnnotations) } - private val _type: PsiType by lazy { + private val _type: PsiType by lazyPub { withReceiverSymbol { receiver -> receiver.type.asPsiType(this@SymbolLightParameterForReceiver) } ?: nonExistentType() diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterList.kt index 72b969b992e..842c3be1bf2 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterList.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterList.kt @@ -10,6 +10,7 @@ import com.intellij.psi.PsiParameterList import com.intellij.psi.impl.light.LightParameterListBuilder import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer +import org.jetbrains.kotlin.asJava.classes.lazyPub import org.jetbrains.kotlin.asJava.elements.KtLightElement import org.jetbrains.kotlin.asJava.elements.KtLightElementBase import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase @@ -29,7 +30,7 @@ internal class SymbolLightParameterList( override val kotlinOrigin: KtParameterList? get() = (parent.kotlinOrigin as? KtFunction)?.valueParameterList - private val clsDelegate: PsiParameterList by lazy { + private val clsDelegate: PsiParameterList by lazyPub { val builder = LightParameterListBuilder(manager, language) callableWithReceiverSymbolPointer?.let { diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightSetterParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightSetterParameter.kt index 62cd8f83b79..d046c3d6995 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightSetterParameter.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightSetterParameter.kt @@ -33,7 +33,7 @@ internal class SymbolLightSetterParameter( return super.getName() } - private val isDefaultSetterParameter: Boolean by lazy { + private val isDefaultSetterParameter: Boolean by lazyPub { containingPropertySymbolPointer.withSymbol(ktModule) { it.setter?.isDefault != false } @@ -41,7 +41,7 @@ internal class SymbolLightSetterParameter( override fun getModifierList(): PsiModifierList = _modifierList - private val _modifierList: PsiModifierList by lazy { + private val _modifierList: PsiModifierList by lazyPub { val lazyAnnotations: Lazy> = lazyPub { analyzeForLightClasses(ktModule) { val annotationsFromSetter = parameterSymbolPointer.restoreSymbolOrThrowIfDisposed().computeAnnotations( diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightSuspendContinuationParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightSuspendContinuationParameter.kt index 40444aa3477..9f853cd214a 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightSuspendContinuationParameter.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightSuspendContinuationParameter.kt @@ -49,8 +49,8 @@ internal class SymbolLightSuspendContinuationParameter( override fun getModifierList(): PsiModifierList = _modifierList - private val _modifierList: PsiModifierList by lazy { - val lazyAnnotations = lazy { + private val _modifierList: PsiModifierList by lazyPub { + val lazyAnnotations = lazyPub { if (withFunctionSymbol { it.visibility.isPrivateOrPrivateToThis() }) emptyList() else diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt index 578b84f7e46..86e78df56b4 100644 --- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt +++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt @@ -158,7 +158,7 @@ internal class SymbolLightTypeParameter private constructor( override fun addAnnotation(qualifiedName: String): PsiAnnotation = cannotModify() //End of PsiClass simple implementation - private val _name: String by lazy { + private val _name: String by lazyPub { typeParameterDeclaration?.name ?: withTypeParameterSymbol { it.name.asString() } }