From 812e0413c223ae0321c2f153d29e742185fd53f9 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Fri, 25 Nov 2022 16:36:30 +0100 Subject: [PATCH] [SLC] reduce number of lazyPub calls ^KT-54051 --- .../symbol/annotations/SymbolAnnotationParameterList.kt | 2 +- .../annotations/SymbolLightAnnotationForAnnotationCall.kt | 5 ++--- .../symbol/annotations/SymbolLightSimpleAnnotation.kt | 5 ++--- .../symbol/classes/SymbolLightClassForClassOrObject.kt | 6 +++--- .../classes/symbol/classes/SymbolLightClassForFacade.kt | 2 +- .../kotlin/light/classes/symbol/fields/SymbolLightField.kt | 3 +-- .../classes/symbol/fields/SymbolLightFieldForEnumEntry.kt | 2 +- .../classes/symbol/fields/SymbolLightFieldForObject.kt | 4 ++-- .../classes/symbol/fields/SymbolLightFieldForProperty.kt | 2 +- .../classes/symbol/methods/SymbolLightAccessorMethod.kt | 6 +++--- .../light/classes/symbol/methods/SymbolLightMethod.kt | 2 +- .../classes/symbol/methods/SymbolLightNoArgConstructor.kt | 7 +++---- .../symbol/parameters/SymbolLightParameterForReceiver.kt | 2 +- .../parameters/SymbolLightSuspendContinuationParameter.kt | 2 +- 14 files changed, 23 insertions(+), 27 deletions(-) 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 906aa443ebc..9b8f9b78209 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 lazyPub { + private val _nameIdentifier: PsiIdentifier by lazy { 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 77ed8fd528b..3ee03b21c5b 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,7 +11,6 @@ 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 @@ -26,8 +25,8 @@ internal class SymbolLightAnnotationForAnnotationCall( override fun findDeclaredAttributeValue(attributeName: String?) = PsiImplUtil.findDeclaredAttributeValue(this, attributeName) - private val _parameterList: PsiAnnotationParameterList by lazyPub { - SymbolAnnotationParameterList(this@SymbolLightAnnotationForAnnotationCall, annotationCall.arguments) + private val _parameterList: PsiAnnotationParameterList by lazy { + SymbolAnnotationParameterList(this, annotationCall.arguments) } override fun getParameterList(): PsiAnnotationParameterList = _parameterList 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 0c00666a157..998918a02a6 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,7 +10,6 @@ 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( @@ -36,8 +35,8 @@ internal class SymbolLightSimpleAnnotation( override fun findDeclaredAttributeValue(attributeName: String?) = PsiImplUtil.findDeclaredAttributeValue(this, attributeName) - private val _parameterList: PsiAnnotationParameterList by lazyPub { - SymbolAnnotationParameterList(this@SymbolLightSimpleAnnotation, arguments) + private val _parameterList: PsiAnnotationParameterList by lazy { + SymbolAnnotationParameterList(this, arguments) } override fun getParameterList(): PsiAnnotationParameterList = _parameterList 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 8c1b28d2404..e05c6020942 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 @@ -66,7 +66,7 @@ abstract class SymbolLightClassForClassOrObject(protected val classOrObject: KtC internal val isAnnotation: Boolean get() = classOrObject is KtClass && classOrObject.isAnnotation() internal val isEnum: Boolean get() = classOrObject is KtClass && classOrObject.isEnum() - private val _isDeprecated: Boolean by lazyPub { + private val _isDeprecated: Boolean by lazy { withClassOrObjectSymbol { it.hasDeprecatedAnnotation() } } @@ -76,7 +76,7 @@ abstract class SymbolLightClassForClassOrObject(protected val classOrObject: KtC abstract override fun getOwnFields(): List abstract override fun getOwnMethods(): List - private val _identifier: PsiIdentifier by lazyPub { + private val _identifier: PsiIdentifier by lazy { KtLightIdentifier(this, classOrObject) } @@ -85,7 +85,7 @@ abstract class SymbolLightClassForClassOrObject(protected val classOrObject: KtC abstract override fun getExtendsList(): PsiReferenceList? abstract override fun getImplementsList(): PsiReferenceList? - private val _typeParameterList: PsiTypeParameterList? by lazyPub { + private val _typeParameterList: PsiTypeParameterList? by lazy { hasTypeParameters().ifTrue { SymbolLightTypeParameterList( owner = this, 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 d164fbeb3eb..3ad51026002 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 @@ -111,7 +111,7 @@ class SymbolLightClassForFacade( } } - private val multiFileClass: Boolean by lazyPub { + private val multiFileClass: Boolean by lazy { files.size > 1 || firstFileInFacade.isJvmMultifileClassFile } 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 5ccf425a2d6..b37eb010c9e 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,7 +14,6 @@ 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 @@ -37,7 +36,7 @@ internal abstract class SymbolLightField protected constructor( override fun hasInitializer(): Boolean = initializer !== null - private val _identifier: PsiIdentifier by lazyPub { + private val _identifier: PsiIdentifier by lazy { 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 273cf01b5be..94b7440579b 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 @@ -56,7 +56,7 @@ internal class SymbolLightFieldForEnumEntry( private val hasBody: Boolean get() = enumEntry.body != null - private val _initializingClass: PsiEnumConstantInitializer? by lazyPub { + private val _initializingClass: PsiEnumConstantInitializer? by lazy { 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 29d6e2d7cf0..f75c5dc5917 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 @@ -45,7 +45,7 @@ internal class SymbolLightFieldForObject( } } - val lazyAnnotations = lazyPub { + val lazyAnnotations = lazy { val notNullAnnotation = SymbolLightSimpleAnnotation(NotNull::class.java.name, this) listOf(notNullAnnotation) } @@ -53,7 +53,7 @@ internal class SymbolLightFieldForObject( SymbolLightMemberModifierList(this, lazyModifiers, lazyAnnotations) } - private val _isDeprecated: Boolean by lazyPub { + private val _isDeprecated: Boolean by lazy { 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 f5e782c8df7..0b741a2cfb6 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 lazyPub { + private val _isDeprecated: Boolean by lazy { withPropertySymbol { propertySymbol -> propertySymbol.hasDeprecatedAnnotation(AnnotationUseSiteTarget.FIELD) } 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 6116e6845ae..9dc71733638 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 lazyPub { + private val _typeParameterList: PsiTypeParameterList? by lazy { hasTypeParameters().ifTrue { SymbolLightTypeParameterList( owner = this, @@ -193,7 +193,7 @@ internal class SymbolLightAccessorMethod private constructor( override fun isConstructor(): Boolean = false - private val _isDeprecated: Boolean by lazyPub { + private val _isDeprecated: Boolean by lazy { analyzeForLightClasses(ktModule) { propertySymbol().hasDeprecatedAnnotation(accessorSite) } @@ -201,7 +201,7 @@ internal class SymbolLightAccessorMethod private constructor( override fun isDeprecated(): Boolean = _isDeprecated - private val _identifier: PsiIdentifier by lazyPub { + private val _identifier: PsiIdentifier by lazy { KtLightIdentifier(this, containingPropertyDeclaration) } 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 139adaf777e..3b925f95701 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 @@ -107,7 +107,7 @@ internal abstract class SymbolLightMethod private KtLightIdentifier(this@SymbolLightMethod, functionDeclaration) } - private val _isDeprecated: Boolean by lazyPub { + private val _isDeprecated: Boolean by lazy { 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 588da9220f8..495ca92076b 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,7 +7,6 @@ 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.SymbolLightClassForClassOrObject import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList @@ -27,7 +26,7 @@ internal class SymbolLightNoArgConstructor( override fun getTypeParameterList(): PsiTypeParameterList? = null override fun getTypeParameters(): Array = PsiTypeParameter.EMPTY_ARRAY - private val _identifier: PsiIdentifier by lazyPub { + private val _identifier: PsiIdentifier by lazy { KtLightIdentifier(this, ktDeclaration = null) } @@ -41,8 +40,8 @@ internal class SymbolLightNoArgConstructor( override fun getModifierList(): PsiModifierList = _modifierList - private val _parameterList: PsiParameterList by lazyPub { - SymbolLightParameterList(parent = this@SymbolLightNoArgConstructor) + private val _parameterList: PsiParameterList by lazy { + SymbolLightParameterList(parent = this) } override fun getParameterList(): PsiParameterList = _parameterList 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 ccc4b6c9bce..3d0326940da 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 lazyPub { + private val _name: String by lazy { AsmUtil.getLabeledThisName(methodName, AsmUtil.LABELED_THIS_PARAMETER, AsmUtil.RECEIVER_PARAMETER_NAME) } 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 ae9f174a888..40444aa3477 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 @@ -50,7 +50,7 @@ internal class SymbolLightSuspendContinuationParameter( override fun getModifierList(): PsiModifierList = _modifierList private val _modifierList: PsiModifierList by lazy { - val lazyAnnotations = lazyPub { + val lazyAnnotations = lazy { if (withFunctionSymbol { it.visibility.isPrivateOrPrivateToThis() }) emptyList() else