Fix ultraKtLightClassForFacade compiler backend call
+minor fixes
This commit is contained in:
+15
-6
@@ -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 {
|
||||
|
||||
|
||||
+6
-2
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user