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.Path
|
||||||
import java.nio.file.Paths
|
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
|
// 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
|
// if present. Use it for library and incremental compilation sessions. For source sessions use
|
||||||
// `JavaSymbolProvider`, as Kotlin classes should be parsed first.
|
// `JavaSymbolProvider`, as Kotlin classes should be parsed first.
|
||||||
@@ -43,6 +49,7 @@ class JvmClassFileBasedSymbolProvider(
|
|||||||
|
|
||||||
override fun computePackagePartsInfos(packageFqName: FqName): List<PackagePartsCacheData> {
|
override fun computePackagePartsInfos(packageFqName: FqName): List<PackagePartsCacheData> {
|
||||||
return packagePartProvider.findPackageParts(packageFqName.asString()).mapNotNull { partName ->
|
return packagePartProvider.findPackageParts(packageFqName.asString()).mapNotNull { partName ->
|
||||||
|
if (partName in kotlinBuiltins) return@mapNotNull null
|
||||||
val classId = ClassId.topLevel(JvmClassName.byInternalName(partName).fqNameForTopLevelClassMaybeWithDollars)
|
val classId = ClassId.topLevel(JvmClassName.byInternalName(partName).fqNameForTopLevelClassMaybeWithDollars)
|
||||||
if (!javaFacade.hasTopLevelClassOf(classId)) return@mapNotNull null
|
if (!javaFacade.hasTopLevelClassOf(classId)) return@mapNotNull null
|
||||||
val (kotlinJvmBinaryClass, byteContent) =
|
val (kotlinJvmBinaryClass, byteContent) =
|
||||||
|
|||||||
@@ -66,6 +66,8 @@ object StandardNames {
|
|||||||
@JvmField
|
@JvmField
|
||||||
val TEXT_PACKAGE_FQ_NAME = BUILT_INS_PACKAGE_FQ_NAME.child(Name.identifier("text"))
|
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
|
@JvmField
|
||||||
val BUILT_INS_PACKAGE_FQ_NAMES = setOf(
|
val BUILT_INS_PACKAGE_FQ_NAMES = setOf(
|
||||||
BUILT_INS_PACKAGE_FQ_NAME,
|
BUILT_INS_PACKAGE_FQ_NAME,
|
||||||
@@ -73,7 +75,7 @@ object StandardNames {
|
|||||||
RANGES_PACKAGE_FQ_NAME,
|
RANGES_PACKAGE_FQ_NAME,
|
||||||
ANNOTATION_PACKAGE_FQ_NAME,
|
ANNOTATION_PACKAGE_FQ_NAME,
|
||||||
KOTLIN_REFLECT_FQ_NAME,
|
KOTLIN_REFLECT_FQ_NAME,
|
||||||
BUILT_INS_PACKAGE_FQ_NAME.child(Name.identifier("internal")),
|
KOTLIN_INTERNAL_FQ_NAME,
|
||||||
COROUTINES_PACKAGE_FQ_NAME
|
COROUTINES_PACKAGE_FQ_NAME
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user