Fix ultraKtLightClassForFacade compiler backend call

+minor fixes
This commit is contained in:
Igor Yakovlev
2020-05-01 05:26:58 +03:00
parent 62c24c95b5
commit 9f8044ff1b
3 changed files with 22 additions and 9 deletions
@@ -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<LightClassDataHolder.ForFacade> = myLightClassDataCache
protected open val javaFileStub: PsiJavaFileStub?
get() = lightClassDataCache.value.javaFileStub
override val lightClassData
get() = lightClassDataCache.value.findDataForFacade(facadeClassFqName)
val files: Collection<KtFile> = 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<HierarchicalMethodSignature> = PsiSuperMethodImplUtil.getVisibleSignatures(this)
companion object {
@@ -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<HierarchicalMethodSignature> = PsiSuperMethodImplUtil.getVisibleSignatures(this)
override fun copy(): KtLightClassForFacade =
KtUltraLightClassForFacade(manager, facadeClassFqName, lightClassDataCache, files, filesWithSupports)
}
@@ -6,5 +6,5 @@ class KotlinPackageClassUsedFromJava {
}
}
//INFO: <div class='definition'><pre>testing<br>public final class <b>testing.KotlinPackageClassUsedFromJava_DataKt</b>
//INFO: <div class='definition'><pre>testing<br>public final class <b>KotlinPackageClassUsedFromJava_DataKt</b>
//INFO: extends <a href="psi_element://java.lang.Object"><code>Object</code></a></pre></div><table class='sections'></table>