diff --git a/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtLightClassBase.kt b/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtLightClassBase.kt index 19003e4e052..06be8462280 100644 --- a/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtLightClassBase.kt +++ b/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtLightClassBase.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -18,10 +18,16 @@ import org.jetbrains.kotlin.idea.KotlinLanguage abstract class KtLightClassBase protected constructor( manager: PsiManager ) : AbstractLightClass(manager, KotlinLanguage.INSTANCE), KtExtensibleLightClass { - protected open val myInnersCache = KotlinClassInnerStuffCache( - myClass = this, - dependencies = listOf(KotlinModificationTrackerService.getInstance(manager.project).outOfBlockModificationTracker), - lazyCreator = LightClassesLazyCreator(project) + private val myInnersCache by lazyPub { + KotlinClassInnerStuffCache( + myClass = this, + dependencies = cacheDependencies(), + lazyCreator = LightClassesLazyCreator(project) + ) + } + + protected open fun cacheDependencies(): List = listOf( + KotlinModificationTrackerService.getInstance(manager.project).outOfBlockModificationTracker ) override fun getDelegate() = diff --git a/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt b/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt index f1e0e36a6c3..62b395c0447 100644 --- a/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt +++ b/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -35,12 +35,7 @@ abstract class KtLightClassForSourceDeclaration( protected val jvmDefaultMode: JvmDefaultMode, ) : KtLightClassBase(classOrObject.manager), StubBasedPsiElement> { - - override val myInnersCache: KotlinClassInnerStuffCache = KotlinClassInnerStuffCache( - myClass = this, - dependencies = classOrObject.getExternalDependencies(), - lazyCreator = LightClassesLazyCreator(project) - ) + override fun cacheDependencies(): List = classOrObject.getExternalDependencies() private val lightIdentifier = KtLightIdentifier(this, classOrObject)