[FIR] do not swallow PCE

This commit is contained in:
Ilya Kirillov
2022-06-23 21:46:54 +02:00
parent 47c51b82b6
commit da43062a46
4 changed files with 5 additions and 29 deletions
@@ -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) })
@@ -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)