diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForFacade.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForFacade.kt index a4cd87290b2..3e2cf933a49 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForFacade.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KtLightClassForFacade.kt @@ -21,6 +21,8 @@ import com.intellij.openapi.util.Comparing import com.intellij.openapi.util.TextRange import com.intellij.openapi.util.registry.Registry import com.intellij.psi.* +import com.intellij.psi.impl.PsiSuperMethodImplUtil +import com.intellij.psi.impl.java.stubs.PsiJavaFileStub import com.intellij.psi.impl.light.LightEmptyImplementsList import com.intellij.psi.impl.light.LightModifierList import com.intellij.psi.search.GlobalSearchScope @@ -54,6 +56,12 @@ open class KtLightClassForFacade constructor( protected open val lightClassDataCache: CachedValue = myLightClassDataCache + protected open val javaFileStub: PsiJavaFileStub? + get() = lightClassDataCache.value.javaFileStub + + override val lightClassData + get() = lightClassDataCache.value.findDataForFacade(facadeClassFqName) + val files: Collection = files.toSet() private val firstFileInFacade by lazyPub { files.iterator().next() } @@ -71,12 +79,14 @@ open class KtLightClassForFacade constructor( LightEmptyImplementsList(manager) private val packageClsFile = FakeFileForLightClass( - files.first(), + firstFileInFacade, lightClass = { this }, - stub = { lightClassDataCache.value.javaFileStub }, + stub = { javaFileStub }, packageFqName = packageFqName ) + override fun getParent(): PsiElement = containingFile + override val kotlinOrigin: KtClassOrObject? get() = null val fqName: FqName @@ -178,9 +188,6 @@ open class KtLightClassForFacade constructor( override fun copy() = KtLightClassForFacade(manager, facadeClassFqName, lightClassDataCache, files) - override val lightClassData - get() = lightClassDataCache.value.findDataForFacade(facadeClassFqName) - override fun getNavigationElement() = firstFileInFacade override fun isEquivalentTo(another: PsiElement?): Boolean { @@ -243,7 +250,9 @@ open class KtLightClassForFacade constructor( override fun getStartOffsetInParent() = firstFileInFacade.startOffsetInParent - override fun isWritable() = firstFileInFacade.isWritable + override fun isWritable() = files.all { it.isWritable } + + override fun getVisibleSignatures(): MutableCollection = PsiSuperMethodImplUtil.getVisibleSignatures(this) companion object { diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraKtLightClassForFacade.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraKtLightClassForFacade.kt index 9d6532b4402..fab51e0858f 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraKtLightClassForFacade.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraKtLightClassForFacade.kt @@ -7,7 +7,9 @@ package org.jetbrains.kotlin.asJava.classes import com.intellij.psi.* import com.intellij.psi.impl.PsiSuperMethodImplUtil +import com.intellij.psi.impl.java.stubs.PsiJavaFileStub import com.intellij.psi.util.CachedValue +import org.jetbrains.kotlin.asJava.builder.LightClassData import org.jetbrains.kotlin.asJava.builder.LightClassDataHolder import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.asJava.elements.KtLightMethod @@ -30,6 +32,10 @@ class KtUltraLightClassForFacade( override val clsDelegate: PsiClass get() = invalidAccess() + override val lightClassData: LightClassData get() = invalidAccess() + + override val javaFileStub: PsiJavaFileStub? = null + override fun getScope(): PsiElement? = parent private val filesWithSupportsWithCreators by lazyPub { @@ -93,8 +99,6 @@ class KtUltraLightClassForFacade( override fun getOwnMethods() = _ownMethods - override fun getVisibleSignatures(): MutableCollection = PsiSuperMethodImplUtil.getVisibleSignatures(this) - override fun copy(): KtLightClassForFacade = KtUltraLightClassForFacade(manager, facadeClassFqName, lightClassDataCache, files, filesWithSupports) } \ No newline at end of file diff --git a/idea/testData/editor/quickDoc/KotlinPackageClassUsedFromJava.java b/idea/testData/editor/quickDoc/KotlinPackageClassUsedFromJava.java index be31754d58f..e69d1088020 100644 --- a/idea/testData/editor/quickDoc/KotlinPackageClassUsedFromJava.java +++ b/idea/testData/editor/quickDoc/KotlinPackageClassUsedFromJava.java @@ -6,5 +6,5 @@ class KotlinPackageClassUsedFromJava { } } -//INFO:
testing
public final class testing.KotlinPackageClassUsedFromJava_DataKt +//INFO:
testing
public final class KotlinPackageClassUsedFromJava_DataKt //INFO: extends Object