FIR: filter out builtin symbols in JvmClassFileBasedSymbolProvider
These symbols are already provided by FirBuiltinSymbolProvider.
This commit is contained in:
committed by
Ilya Kirillov
parent
5a1680ca3b
commit
f23256bf49
+7
@@ -27,6 +27,12 @@ import org.jetbrains.kotlin.serialization.deserialization.IncompatibleVersionErr
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.Paths
|
||||
|
||||
/**
|
||||
* Any top level declarations in core/builtins/src are also available from FirBuiltinSymbolProvider (or FirIdeBuiltinSymbolProvider) for IDE
|
||||
* so we filter them out to avoid providing the "same" symbols twice.
|
||||
*/
|
||||
private val kotlinBuiltins = setOf("kotlin/ArrayIntrinsicsKt", "kotlin/internal/ProgressionUtilKt")
|
||||
|
||||
// This symbol provider loads JVM classes, reading extra info from Kotlin `@Metadata` annotations
|
||||
// if present. Use it for library and incremental compilation sessions. For source sessions use
|
||||
// `JavaSymbolProvider`, as Kotlin classes should be parsed first.
|
||||
@@ -43,6 +49,7 @@ class JvmClassFileBasedSymbolProvider(
|
||||
|
||||
override fun computePackagePartsInfos(packageFqName: FqName): List<PackagePartsCacheData> {
|
||||
return packagePartProvider.findPackageParts(packageFqName.asString()).mapNotNull { partName ->
|
||||
if (partName in kotlinBuiltins) return@mapNotNull null
|
||||
val classId = ClassId.topLevel(JvmClassName.byInternalName(partName).fqNameForTopLevelClassMaybeWithDollars)
|
||||
if (!javaFacade.hasTopLevelClassOf(classId)) return@mapNotNull null
|
||||
val (kotlinJvmBinaryClass, byteContent) =
|
||||
|
||||
@@ -66,6 +66,8 @@ object StandardNames {
|
||||
@JvmField
|
||||
val TEXT_PACKAGE_FQ_NAME = BUILT_INS_PACKAGE_FQ_NAME.child(Name.identifier("text"))
|
||||
|
||||
val KOTLIN_INTERNAL_FQ_NAME = BUILT_INS_PACKAGE_FQ_NAME.child(Name.identifier("internal"))
|
||||
|
||||
@JvmField
|
||||
val BUILT_INS_PACKAGE_FQ_NAMES = setOf(
|
||||
BUILT_INS_PACKAGE_FQ_NAME,
|
||||
@@ -73,7 +75,7 @@ object StandardNames {
|
||||
RANGES_PACKAGE_FQ_NAME,
|
||||
ANNOTATION_PACKAGE_FQ_NAME,
|
||||
KOTLIN_REFLECT_FQ_NAME,
|
||||
BUILT_INS_PACKAGE_FQ_NAME.child(Name.identifier("internal")),
|
||||
KOTLIN_INTERNAL_FQ_NAME,
|
||||
COROUTINES_PACKAGE_FQ_NAME
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user