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:
committed by
Nikolay Krasko
parent
ce3ad8f4da
commit
5614afed14
+10
-1
@@ -21,8 +21,8 @@ import com.intellij.psi.PsiElement
|
|||||||
import com.intellij.psi.PsiMethod
|
import com.intellij.psi.PsiMethod
|
||||||
import com.intellij.psi.impl.light.LightClass
|
import com.intellij.psi.impl.light.LightClass
|
||||||
import com.intellij.psi.impl.light.LightMethod
|
import com.intellij.psi.impl.light.LightMethod
|
||||||
|
import org.jetbrains.kotlin.analyzer.KotlinModificationTrackerService
|
||||||
import org.jetbrains.kotlin.asJava.LightClassUtil
|
import org.jetbrains.kotlin.asJava.LightClassUtil
|
||||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
|
||||||
import org.jetbrains.kotlin.asJava.toLightClass
|
import org.jetbrains.kotlin.asJava.toLightClass
|
||||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
@@ -31,6 +31,15 @@ import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
|||||||
open class KtLightClassForLocalDeclaration(
|
open class KtLightClassForLocalDeclaration(
|
||||||
classOrObject: KtClassOrObject
|
classOrObject: KtClassOrObject
|
||||||
) : KtLightClassForSourceDeclaration(classOrObject) {
|
) : 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 copy(): PsiElement = KtLightClassForLocalDeclaration(classOrObject.copy() as KtClassOrObject)
|
||||||
override fun getQualifiedName(): String? = null
|
override fun getQualifiedName(): String? = null
|
||||||
|
|||||||
Reference in New Issue
Block a user