[light classes] fix cache value creation

Cause: we are implicitly wrapping `jvmDefaultMode` that leads to
incorrect result

^KTIJ-19042 Fixed
^EA-357501 Fixed
This commit is contained in:
Dmitry Gridin
2021-09-16 18:22:34 +07:00
committed by Space
parent 765cad8448
commit 9ceb477523
@@ -24,6 +24,7 @@ import com.intellij.psi.util.CachedValueProvider
import com.intellij.psi.util.CachedValuesManager
import com.intellij.psi.util.PsiUtilCore
import com.intellij.util.IncorrectOperationException
import com.intellij.util.containers.ConcurrentFactoryMap
import org.jetbrains.annotations.NonNls
import org.jetbrains.kotlin.analyzer.KotlinModificationTrackerService
import org.jetbrains.kotlin.asJava.ImpreciseResolveResult
@@ -52,7 +53,6 @@ import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub
import org.jetbrains.kotlin.resolve.DescriptorUtils
import java.util.*
import javax.swing.Icon
private class KtLightClassModifierList(containingClass: KtLightClassForSourceDeclaration, computeModifiers: () -> Set<String>) :
@@ -345,12 +345,13 @@ abstract class KtLightClassForSourceDeclaration(
fun create(classOrObject: KtClassOrObject, jvmDefaultMode: JvmDefaultMode): KtLightClassForSourceDeclaration? =
CachedValuesManager.getCachedValue(classOrObject) {
CachedValueProvider.Result
.create(
createNoCache(classOrObject, jvmDefaultMode, KtUltraLightSupport.forceUsingOldLightClasses),
KotlinModificationTrackerService.getInstance(classOrObject.project).outOfBlockModificationTracker
)
}
CachedValueProvider.Result.create(
ConcurrentFactoryMap.createMap { defaultMode: JvmDefaultMode ->
createNoCache(classOrObject, defaultMode, KtUltraLightSupport.forceUsingOldLightClasses)
},
KotlinModificationTrackerService.getInstance(classOrObject.project).outOfBlockModificationTracker,
)
}[jvmDefaultMode]
fun createNoCache(
classOrObject: KtClassOrObject,