User: llamalad7 Date: 17 Mar 25 19:43 Revision: 8255b051be8c949b43b601560708e0419e607657 Summary: Fix: Fix `lockedCached` not working on 2025.1. TeamCity URL: https://ci.mcdev.io/viewModification.html?tab=vcsModificationFiles&modId=9875&personal=false Index: src/main/kotlin/util/psi-utils.kt =================================================================== --- src/main/kotlin/util/psi-utils.kt (revision eedb0c0e036ae4a8bd42641e4a0bdaffe659fffa) +++ src/main/kotlin/util/psi-utils.kt (revision 8255b051be8c949b43b601560708e0419e607657) @@ -70,12 +70,12 @@ import com.intellij.psi.util.CachedValue import com.intellij.psi.util.CachedValueProvider import com.intellij.psi.util.CachedValuesManager -import com.intellij.psi.util.ParameterizedCachedValue import com.intellij.psi.util.PsiTreeUtil import com.intellij.psi.util.PsiTypesUtil import com.intellij.psi.util.TypeConversionUtil import com.intellij.psi.util.parentOfType import com.intellij.refactoring.changeSignature.ChangeSignatureUtil +import com.intellij.util.CachedValueBase import com.intellij.util.IncorrectOperationException import com.siyeh.ig.psiutils.ImportUtils import java.util.concurrent.ConcurrentHashMap @@ -293,6 +293,7 @@ @PublishedApi internal val CACHE_LOCKS_KEY = Key.create, ReentrantReadWriteLock>>("mcdev.cacheLock") +@Suppress("UNCHECKED_CAST") inline fun PsiElement.lockedCached( key: Key>, vararg dependencies: Any, @@ -302,15 +303,14 @@ val cacheLock = cacheLocks.computeIfAbsent(key) { ReentrantReadWriteLock() } cacheLock.read { - // The cast seems necessary since 2025.1, ParameterizedCachedValue doesn't extend CachedValue anymore... - @Suppress("UNCHECKED_CAST") val value = getUserData(key as Key>) - if (value?.hasUpToDateValue() == true) { - return value.getValue(dependencies) + val value = getUserData(key as Key>)?.upToDateOrNull + if (value != null) { + return value.get() } } cacheLock.write { - val value = getUserData(key)?.upToDateOrNull + val value = getUserData(key as Key>)?.upToDateOrNull if (value != null) { return value.get() }