diff --git a/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt b/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt index cd8d67403a2..905333ff503 100644 --- a/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt +++ b/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt @@ -21,13 +21,13 @@ import org.jetbrains.kotlin.asJava.ImpreciseResolveResult import org.jetbrains.kotlin.asJava.ImpreciseResolveResult.UNSURE import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier import org.jetbrains.kotlin.config.JvmDefaultMode -import org.jetbrains.kotlin.lexer.KtTokens.* import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.debugText.getDebugText import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub +import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol import javax.swing.Icon abstract class KtLightClassForSourceDeclaration( @@ -211,11 +211,19 @@ fun KtClassOrObject.defaultJavaAncestorQualifiedName(): String? { } fun KtClassOrObject.shouldNotBeVisibleAsLightClass(): Boolean { + val containingFile = containingFile if (containingFile is KtCodeFragment) { // Avoid building light classes for code fragments return true } + // Avoid building light classes for decompiled built-ins + if ((containingFile as? KtFile)?.isCompiled == true && + containingFile.virtualFile.extension == BuiltInSerializerProtocol.BUILTINS_FILE_EXTENSION + ) { + return true + } + if (parentsWithSelf.filterIsInstance().any { it.hasExpectModifier() }) { return true }