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.TextRange
|
||||||
import com.intellij.openapi.util.registry.Registry
|
import com.intellij.openapi.util.registry.Registry
|
||||||
import com.intellij.psi.*
|
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.LightEmptyImplementsList
|
||||||
import com.intellij.psi.impl.light.LightModifierList
|
import com.intellij.psi.impl.light.LightModifierList
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
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 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()
|
val files: Collection<KtFile> = files.toSet()
|
||||||
|
|
||||||
private val firstFileInFacade by lazyPub { files.iterator().next() }
|
private val firstFileInFacade by lazyPub { files.iterator().next() }
|
||||||
@@ -71,12 +79,14 @@ open class KtLightClassForFacade constructor(
|
|||||||
LightEmptyImplementsList(manager)
|
LightEmptyImplementsList(manager)
|
||||||
|
|
||||||
private val packageClsFile = FakeFileForLightClass(
|
private val packageClsFile = FakeFileForLightClass(
|
||||||
files.first(),
|
firstFileInFacade,
|
||||||
lightClass = { this },
|
lightClass = { this },
|
||||||
stub = { lightClassDataCache.value.javaFileStub },
|
stub = { javaFileStub },
|
||||||
packageFqName = packageFqName
|
packageFqName = packageFqName
|
||||||
)
|
)
|
||||||
|
|
||||||
|
override fun getParent(): PsiElement = containingFile
|
||||||
|
|
||||||
override val kotlinOrigin: KtClassOrObject? get() = null
|
override val kotlinOrigin: KtClassOrObject? get() = null
|
||||||
|
|
||||||
val fqName: FqName
|
val fqName: FqName
|
||||||
@@ -178,9 +188,6 @@ open class KtLightClassForFacade constructor(
|
|||||||
|
|
||||||
override fun copy() = KtLightClassForFacade(manager, facadeClassFqName, lightClassDataCache, files)
|
override fun copy() = KtLightClassForFacade(manager, facadeClassFqName, lightClassDataCache, files)
|
||||||
|
|
||||||
override val lightClassData
|
|
||||||
get() = lightClassDataCache.value.findDataForFacade(facadeClassFqName)
|
|
||||||
|
|
||||||
override fun getNavigationElement() = firstFileInFacade
|
override fun getNavigationElement() = firstFileInFacade
|
||||||
|
|
||||||
override fun isEquivalentTo(another: PsiElement?): Boolean {
|
override fun isEquivalentTo(another: PsiElement?): Boolean {
|
||||||
@@ -243,7 +250,9 @@ open class KtLightClassForFacade constructor(
|
|||||||
|
|
||||||
override fun getStartOffsetInParent() = firstFileInFacade.startOffsetInParent
|
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 {
|
companion object {
|
||||||
|
|
||||||
|
|||||||
+6
-2
@@ -7,7 +7,9 @@ package org.jetbrains.kotlin.asJava.classes
|
|||||||
|
|
||||||
import com.intellij.psi.*
|
import com.intellij.psi.*
|
||||||
import com.intellij.psi.impl.PsiSuperMethodImplUtil
|
import com.intellij.psi.impl.PsiSuperMethodImplUtil
|
||||||
|
import com.intellij.psi.impl.java.stubs.PsiJavaFileStub
|
||||||
import com.intellij.psi.util.CachedValue
|
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.builder.LightClassDataHolder
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||||
@@ -30,6 +32,10 @@ class KtUltraLightClassForFacade(
|
|||||||
|
|
||||||
override val clsDelegate: PsiClass get() = invalidAccess()
|
override val clsDelegate: PsiClass get() = invalidAccess()
|
||||||
|
|
||||||
|
override val lightClassData: LightClassData get() = invalidAccess()
|
||||||
|
|
||||||
|
override val javaFileStub: PsiJavaFileStub? = null
|
||||||
|
|
||||||
override fun getScope(): PsiElement? = parent
|
override fun getScope(): PsiElement? = parent
|
||||||
|
|
||||||
private val filesWithSupportsWithCreators by lazyPub {
|
private val filesWithSupportsWithCreators by lazyPub {
|
||||||
@@ -93,8 +99,6 @@ class KtUltraLightClassForFacade(
|
|||||||
|
|
||||||
override fun getOwnMethods() = _ownMethods
|
override fun getOwnMethods() = _ownMethods
|
||||||
|
|
||||||
override fun getVisibleSignatures(): MutableCollection<HierarchicalMethodSignature> = PsiSuperMethodImplUtil.getVisibleSignatures(this)
|
|
||||||
|
|
||||||
override fun copy(): KtLightClassForFacade =
|
override fun copy(): KtLightClassForFacade =
|
||||||
KtUltraLightClassForFacade(manager, facadeClassFqName, lightClassDataCache, files, filesWithSupports)
|
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>
|
//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