[FIR] do not swallow PCE
This commit is contained in:
+1
-6
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.deserialization
|
||||
|
||||
import com.intellij.openapi.progress.ProcessCanceledException
|
||||
import org.jetbrains.kotlin.fir.FirModuleData
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.caches.FirCache
|
||||
@@ -116,11 +115,7 @@ abstract class AbstractFirDeserializedSymbolProvider(
|
||||
}
|
||||
|
||||
private fun tryComputePackagePartInfos(packageFqName: FqName): List<PackagePartsCacheData> {
|
||||
return try {
|
||||
computePackagePartsInfos(packageFqName)
|
||||
} catch (e: ProcessCanceledException) {
|
||||
emptyList()
|
||||
}
|
||||
return computePackagePartsInfos(packageFqName)
|
||||
}
|
||||
|
||||
private fun findAndDeserializeTypeAlias(classId: ClassId): FirTypeAliasSymbol? {
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.java
|
||||
|
||||
import com.intellij.openapi.progress.ProcessCanceledException
|
||||
import org.jetbrains.kotlin.KtFakeSourceElement
|
||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
||||
@@ -89,11 +88,7 @@ abstract class FirJavaFacade(
|
||||
?.takeIf { it.classId == classId && !it.hasMetadataAnnotation() }
|
||||
|
||||
fun getPackage(fqName: FqName): FqName? =
|
||||
try {
|
||||
packageCache.getValue(fqName)?.fqName
|
||||
} catch (e: ProcessCanceledException) {
|
||||
null
|
||||
}
|
||||
packageCache.getValue(fqName)?.fqName
|
||||
|
||||
fun hasTopLevelClassOf(classId: ClassId): Boolean {
|
||||
val knownNames = knownClassNamesInPackage.getValue(classId.packageFqName) ?: return true
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.java
|
||||
|
||||
import com.intellij.openapi.progress.ProcessCanceledException
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.caches.firCachesFactory
|
||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||
@@ -44,11 +43,7 @@ class JavaSymbolProvider(
|
||||
javaFacade.getPackage(fqName)
|
||||
|
||||
override fun getClassLikeSymbolByClassId(classId: ClassId): FirRegularClassSymbol? =
|
||||
try {
|
||||
if (javaFacade.hasTopLevelClassOf(classId)) getFirJavaClass(classId) else null
|
||||
} catch (e: ProcessCanceledException) {
|
||||
null
|
||||
}
|
||||
if (javaFacade.hasTopLevelClassOf(classId)) getFirJavaClass(classId) else null
|
||||
|
||||
private fun getFirJavaClass(classId: ClassId): FirRegularClassSymbol? =
|
||||
classCache.getValue(classId, classId.outerClassId?.let { getFirJavaClass(it) })
|
||||
|
||||
+2
-11
@@ -5,7 +5,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.java.deserialization
|
||||
|
||||
import com.intellij.openapi.progress.ProcessCanceledException
|
||||
import org.jetbrains.kotlin.descriptors.SourceElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.ThreadSafeMutableState
|
||||
@@ -99,11 +98,7 @@ class JvmClassFileBasedSymbolProvider(
|
||||
get() = classHeader.isPreRelease
|
||||
|
||||
private fun loadJavaClass(classId: ClassId, content: ByteArray?): ClassMetadataFindResult? {
|
||||
val javaClass = try {
|
||||
javaFacade.findClass(classId, content) ?: return null
|
||||
} catch (e: ProcessCanceledException) {
|
||||
return null
|
||||
}
|
||||
val javaClass = javaFacade.findClass(classId, content) ?: return null
|
||||
return ClassMetadataFindResult.NoMetadata { symbol ->
|
||||
javaFacade.convertJavaClassToFir(symbol, classId.outerClassId?.let(::getClass), javaClass)
|
||||
}
|
||||
@@ -113,11 +108,7 @@ class JvmClassFileBasedSymbolProvider(
|
||||
// Kotlin classes are annotated Java classes, so this check also looks for them.
|
||||
if (!javaFacade.hasTopLevelClassOf(classId)) return null
|
||||
|
||||
val result = try {
|
||||
kotlinClassFinder.findKotlinClassOrContent(classId)
|
||||
} catch (e: ProcessCanceledException) {
|
||||
return null
|
||||
}
|
||||
val result = kotlinClassFinder.findKotlinClassOrContent(classId)
|
||||
val kotlinClass = when (result) {
|
||||
is KotlinClassFinder.Result.KotlinClass -> result.kotlinJvmBinaryClass
|
||||
is KotlinClassFinder.Result.ClassFileContent -> return loadJavaClass(classId, result.content)
|
||||
|
||||
Reference in New Issue
Block a user