diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt index 0c936e36a43..07b9033891c 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForSourceDeclaration.kt @@ -341,7 +341,7 @@ abstract class KtLightClassForSourceDeclaration(protected val classOrObject: KtC } fun createNoCache(classOrObject: KtClassOrObject): KtLightClassForSourceDeclaration? { - if (classOrObject.parentsWithSelf.filterIsInstance().any { it.hasExpectModifier() }) { + if (classOrObject.shouldNotBeVisibleAsLightClass()) { return null } @@ -515,3 +515,6 @@ fun KtClassOrObject.defaultJavaAncestorQualifiedName(): String? { else -> CommonClassNames.JAVA_LANG_OBJECT } } + +fun KtClassOrObject.shouldNotBeVisibleAsLightClass() = + parentsWithSelf.filterIsInstance().any { it.hasExpectModifier() } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt index 055b2f270aa..12ba23840f2 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt @@ -26,6 +26,7 @@ import com.intellij.psi.util.PsiTreeUtil import org.jetbrains.kotlin.asJava.LightClassBuilder import org.jetbrains.kotlin.asJava.LightClassGenerationSupport import org.jetbrains.kotlin.asJava.builder.ClsWrapperStubPsiFactory +import org.jetbrains.kotlin.asJava.builder.InvalidLightClassDataHolder import org.jetbrains.kotlin.asJava.builder.LightClassDataHolder import org.jetbrains.kotlin.asJava.classes.* import org.jetbrains.kotlin.asJava.finder.JavaElementFinder @@ -55,16 +56,16 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG private val psiManager: PsiManager = PsiManager.getInstance(project) override fun createDataHolderForClass(classOrObject: KtClassOrObject, builder: LightClassBuilder): LightClassDataHolder.ForClass { - return if (classOrObject.isLocal) { - LazyLightClassDataHolder.ForClass( + return when { + classOrObject.shouldNotBeVisibleAsLightClass() -> InvalidLightClassDataHolder + classOrObject.isLocal -> LazyLightClassDataHolder.ForClass( builder, classOrObject.project, exactContextProvider = { IDELightClassContexts.contextForLocalClassOrObject(classOrObject) }, dummyContextProvider = null, isLocal = true ) - } else { - LazyLightClassDataHolder.ForClass( + else -> LazyLightClassDataHolder.ForClass( builder, classOrObject.project, exactContextProvider = { IDELightClassContexts.contextForNonLocalClassOrObject(classOrObject) },