Create InvalidLightClassDataHolder for expect classes
This fixes an exception from duplicateJvmSignature reporter Fixes "QuickFixTestGenerated$Override.testDontOfferToImplementMembersForExpectedClass" on teamcity
This commit is contained in:
+4
-1
@@ -341,7 +341,7 @@ abstract class KtLightClassForSourceDeclaration(protected val classOrObject: KtC
|
||||
}
|
||||
|
||||
fun createNoCache(classOrObject: KtClassOrObject): KtLightClassForSourceDeclaration? {
|
||||
if (classOrObject.parentsWithSelf.filterIsInstance<KtClassOrObject>().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<KtClassOrObject>().any { it.hasExpectModifier() }
|
||||
|
||||
+5
-4
@@ -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) },
|
||||
|
||||
Reference in New Issue
Block a user