Fix over-caching content in light classes for local declarations (KT-32820)

Use combination of OOCB and file tracker for local classes.

#KT-32820 Fixed
This commit is contained in:
Nikolay Krasko
2019-07-31 14:15:10 +03:00
committed by Nikolay Krasko
parent ce3ad8f4da
commit 5614afed14
@@ -21,8 +21,8 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiMethod
import com.intellij.psi.impl.light.LightClass
import com.intellij.psi.impl.light.LightMethod
import org.jetbrains.kotlin.analyzer.KotlinModificationTrackerService
import org.jetbrains.kotlin.asJava.LightClassUtil
import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.psi.*
@@ -31,6 +31,15 @@ import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
open class KtLightClassForLocalDeclaration(
classOrObject: KtClassOrObject
) : KtLightClassForSourceDeclaration(classOrObject) {
override val myInnersCache: KotlinClassInnerStuffCache =
KotlinClassInnerStuffCache(
this,
with(KotlinModificationTrackerService.getInstance(classOrObject.project)) {
listOf(
outOfBlockModificationTracker, fileModificationTracker(classOrObject.containingKtFile)
)
}
)
override fun copy(): PsiElement = KtLightClassForLocalDeclaration(classOrObject.copy() as KtClassOrObject)
override fun getQualifiedName(): String? = null