[light classes] move KtLightClassForScript to light-classes-base module

^KT-53097
This commit is contained in:
Dmitry Gridin
2022-07-08 20:08:29 +02:00
committed by Space
parent 9789c96c53
commit 5072dd01ab
2 changed files with 11 additions and 9 deletions
@@ -74,15 +74,6 @@ abstract class KtLightClassForScript(val script: KtScript) : KtLightClassBase(sc
override fun getInterfaces(): Array<PsiClass> = PsiClass.EMPTY_ARRAY
override fun getOwnInnerClasses(): List<PsiClass> {
return script.declarations.filterIsInstance<KtClassOrObject>()
// workaround for ClassInnerStuffCache not supporting classes with null names, see KT-13927
// inner classes with null names can't be searched for and can't be used from java anyway
// we can't prohibit creating light classes with null names either since they can contain members
.filter { it.name != null }
.mapNotNull { KotlinLightClassFactory.createClass(it) }
}
override fun getInitializers(): Array<PsiClassInitializer> = PsiClassInitializer.EMPTY_ARRAY
override fun getName() = script.fqName.shortName().asString()
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.asJava.classes
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiModifier
import com.intellij.psi.PsiType
import com.intellij.psi.impl.light.LightMethodBuilder
@@ -14,6 +15,7 @@ import com.intellij.psi.util.CachedValuesManager
import org.jetbrains.kotlin.analyzer.KotlinModificationTrackerService
import org.jetbrains.kotlin.asJava.elements.KtLightField
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtNamedFunction
import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.psi.KtScript
@@ -127,4 +129,13 @@ class KtUltraLightClassForScript(
override fun getOwnFields(): List<KtLightField> = _ownFields
override fun copy(): KtLightClassForScript = KtUltraLightClassForScript(script, support)
override fun getOwnInnerClasses(): List<PsiClass> {
return script.declarations.filterIsInstance<KtClassOrObject>()
// workaround for ClassInnerStuffCache not supporting classes with null names, see KT-13927
// inner classes with null names can't be searched for and can't be used from java anyway
// we can't prohibit creating light classes with null names either since they can contain members
.filter { it.name != null }
.mapNotNull { KotlinLightClassFactory.createClass(it) }
}
}