Wrap KtClassOrObject.isLocal, KtFile.isScript with runReadAction in LightClasses
#EA-211576 Fixed (cherry picked from commit 75a59d4bced714af51abd7e354bc873313b28051)
This commit is contained in:
+3
-2
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.analyzer.KotlinModificationTrackerService
|
|||||||
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
|
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
|
||||||
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
||||||
import org.jetbrains.kotlin.asJava.classes.getOutermostClassOrObject
|
import org.jetbrains.kotlin.asJava.classes.getOutermostClassOrObject
|
||||||
|
import org.jetbrains.kotlin.asJava.classes.safeIsLocal
|
||||||
import org.jetbrains.kotlin.codegen.CompilationErrorHandler
|
import org.jetbrains.kotlin.codegen.CompilationErrorHandler
|
||||||
import org.jetbrains.kotlin.codegen.MemberCodegen
|
import org.jetbrains.kotlin.codegen.MemberCodegen
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||||
@@ -59,7 +60,7 @@ class LightClassDataProviderForClassOrObject(
|
|||||||
val trackerService = KotlinModificationTrackerService.getInstance(classOrObject.project)
|
val trackerService = KotlinModificationTrackerService.getInstance(classOrObject.project)
|
||||||
return CachedValueProvider.Result.create(
|
return CachedValueProvider.Result.create(
|
||||||
computeLightClassData(),
|
computeLightClassData(),
|
||||||
if (classOrObject.isLocal) trackerService.modificationTracker else trackerService.outOfBlockModificationTracker
|
if (classOrObject.safeIsLocal()) trackerService.modificationTracker else trackerService.outOfBlockModificationTracker
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -188,7 +189,7 @@ private class ClassFilterForClassOrObject(private val classOrObject: KtClassOrOb
|
|||||||
// TODO: current method will process local classes in irrelevant declarations, it should be fixed.
|
// TODO: current method will process local classes in irrelevant declarations, it should be fixed.
|
||||||
// We generate all enclosing classes
|
// We generate all enclosing classes
|
||||||
|
|
||||||
if (classOrObject.isLocal && processingClassOrObject.isLocal) {
|
if (classOrObject.safeIsLocal() && processingClassOrObject.safeIsLocal()) {
|
||||||
val commonParent = PsiTreeUtil.findCommonParent(classOrObject, processingClassOrObject)
|
val commonParent = PsiTreeUtil.findCommonParent(classOrObject, processingClassOrObject)
|
||||||
return commonParent != null && commonParent !is PsiFile
|
return commonParent != null && commonParent !is PsiFile
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user