Add text functions to KtLightClassForFacade
This commit is contained in:
+2
-1
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.cli.jvm.compiler
|
package org.jetbrains.kotlin.cli.jvm.compiler
|
||||||
|
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
|
import com.intellij.psi.util.CachedValue
|
||||||
import org.jetbrains.kotlin.asJava.LightClassBuilder
|
import org.jetbrains.kotlin.asJava.LightClassBuilder
|
||||||
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
||||||
import org.jetbrains.kotlin.asJava.builder.InvalidLightClassDataHolder
|
import org.jetbrains.kotlin.asJava.builder.InvalidLightClassDataHolder
|
||||||
@@ -45,7 +46,7 @@ class CliLightClassGenerationSupport(private val traceHolder: CliTraceHolder) :
|
|||||||
|
|
||||||
override fun createUltraLightClassForFacade(
|
override fun createUltraLightClassForFacade(
|
||||||
facadeClassFqName: FqName,
|
facadeClassFqName: FqName,
|
||||||
searchScope: GlobalSearchScope,
|
lightClassDataCache: CachedValue<LightClassDataHolder.ForFacade>,
|
||||||
facadeFile: KtFile
|
facadeFile: KtFile
|
||||||
): KtUltraLightClassForFacade? = null
|
): KtUltraLightClassForFacade? = null
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.asJava
|
|||||||
import com.intellij.openapi.components.ServiceManager
|
import com.intellij.openapi.components.ServiceManager
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
|
import com.intellij.psi.util.CachedValue
|
||||||
import org.jetbrains.kotlin.asJava.builder.LightClassBuilderResult
|
import org.jetbrains.kotlin.asJava.builder.LightClassBuilderResult
|
||||||
import org.jetbrains.kotlin.asJava.builder.LightClassConstructionContext
|
import org.jetbrains.kotlin.asJava.builder.LightClassConstructionContext
|
||||||
import org.jetbrains.kotlin.asJava.builder.LightClassDataHolder
|
import org.jetbrains.kotlin.asJava.builder.LightClassDataHolder
|
||||||
@@ -50,7 +51,7 @@ abstract class LightClassGenerationSupport {
|
|||||||
|
|
||||||
abstract fun createUltraLightClassForFacade(
|
abstract fun createUltraLightClassForFacade(
|
||||||
facadeClassFqName: FqName,
|
facadeClassFqName: FqName,
|
||||||
searchScope: GlobalSearchScope,
|
lightClassDataCache: CachedValue<LightClassDataHolder.ForFacade>,
|
||||||
facadeFile: KtFile
|
facadeFile: KtFile
|
||||||
): KtUltraLightClassForFacade?
|
): KtUltraLightClassForFacade?
|
||||||
|
|
||||||
|
|||||||
+29
-6
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.asJava.classes
|
|||||||
import com.intellij.openapi.components.ServiceManager
|
import com.intellij.openapi.components.ServiceManager
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.util.Comparing
|
import com.intellij.openapi.util.Comparing
|
||||||
|
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.light.LightEmptyImplementsList
|
import com.intellij.psi.impl.light.LightEmptyImplementsList
|
||||||
@@ -27,7 +28,7 @@ import com.intellij.psi.search.GlobalSearchScope
|
|||||||
import com.intellij.psi.util.CachedValue
|
import com.intellij.psi.util.CachedValue
|
||||||
import com.intellij.psi.util.CachedValueProvider
|
import com.intellij.psi.util.CachedValueProvider
|
||||||
import com.intellij.psi.util.CachedValuesManager
|
import com.intellij.psi.util.CachedValuesManager
|
||||||
import com.intellij.psi.util.PsiModificationTracker
|
import com.intellij.psi.util.PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT
|
||||||
import com.intellij.util.containers.SLRUCache
|
import com.intellij.util.containers.SLRUCache
|
||||||
import org.jetbrains.annotations.NonNls
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
||||||
@@ -62,13 +63,13 @@ open class KtLightClassForFacade protected constructor(
|
|||||||
override fun createValue(key: StubCacheKey): CachedValue<LightClassDataHolder.ForFacade> {
|
override fun createValue(key: StubCacheKey): CachedValue<LightClassDataHolder.ForFacade> {
|
||||||
val stubProvider = LightClassDataProviderForFileFacade.ByProjectSource(project, key.fqName, key.searchScope)
|
val stubProvider = LightClassDataProviderForFileFacade.ByProjectSource(project, key.fqName, key.searchScope)
|
||||||
return CachedValuesManager.getManager(project)
|
return CachedValuesManager.getManager(project)
|
||||||
.createCachedValue<LightClassDataHolder.ForFacade>(stubProvider, /*trackValue = */false)
|
.createCachedValue<LightClassDataHolder.ForFacade>(stubProvider, false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val cachedValue: CachedValue<FacadeCacheData> = CachedValuesManager.getManager(project).createCachedValue<FacadeCacheData>(
|
private val cachedValue: CachedValue<FacadeCacheData> = CachedValuesManager.getManager(project).createCachedValue<FacadeCacheData>(
|
||||||
{ CachedValueProvider.Result.create(FacadeCacheData(), PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT) }, false
|
{ CachedValueProvider.Result.create(FacadeCacheData(), OUT_OF_CODE_BLOCK_MODIFICATION_COUNT) }, false
|
||||||
)
|
)
|
||||||
|
|
||||||
operator fun get(qualifiedName: FqName, searchScope: GlobalSearchScope): CachedValue<LightClassDataHolder.ForFacade> {
|
operator fun get(qualifiedName: FqName, searchScope: GlobalSearchScope): CachedValue<LightClassDataHolder.ForFacade> {
|
||||||
@@ -86,6 +87,8 @@ open class KtLightClassForFacade protected constructor(
|
|||||||
|
|
||||||
val files: Collection<KtFile> = files.toSet() // needed for hashCode
|
val files: Collection<KtFile> = files.toSet() // needed for hashCode
|
||||||
|
|
||||||
|
private val firstFileInFacade by lazyPub { files.iterator().next() }
|
||||||
|
|
||||||
private val hashCode: Int =
|
private val hashCode: Int =
|
||||||
computeHashCode()
|
computeHashCode()
|
||||||
|
|
||||||
@@ -199,7 +202,7 @@ open class KtLightClassForFacade protected constructor(
|
|||||||
override val lightClassData
|
override val lightClassData
|
||||||
get() = lightClassDataCache.value.findDataForFacade(facadeClassFqName)
|
get() = lightClassDataCache.value.findDataForFacade(facadeClassFqName)
|
||||||
|
|
||||||
override fun getNavigationElement() = files.iterator().next()
|
override fun getNavigationElement() = firstFileInFacade
|
||||||
|
|
||||||
override fun isEquivalentTo(another: PsiElement?): Boolean {
|
override fun isEquivalentTo(another: PsiElement?): Boolean {
|
||||||
return another is KtLightClassForFacade && Comparing.equal(another.qualifiedName, qualifiedName)
|
return another is KtLightClassForFacade && Comparing.equal(another.qualifiedName, qualifiedName)
|
||||||
@@ -251,6 +254,7 @@ open class KtLightClassForFacade protected constructor(
|
|||||||
override fun toString() = "${KtLightClassForFacade::class.java.simpleName}:$facadeClassFqName"
|
override fun toString() = "${KtLightClassForFacade::class.java.simpleName}:$facadeClassFqName"
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
fun createForFacade(
|
fun createForFacade(
|
||||||
manager: PsiManager,
|
manager: PsiManager,
|
||||||
facadeClassFqName: FqName,
|
facadeClassFqName: FqName,
|
||||||
@@ -264,8 +268,17 @@ open class KtLightClassForFacade protected constructor(
|
|||||||
|
|
||||||
if (ultraLightEnabled && files.count() == 1) {
|
if (ultraLightEnabled && files.count() == 1) {
|
||||||
val facadeFile = files.first()
|
val facadeFile = files.first()
|
||||||
LightClassGenerationSupport.getInstance(facadeFile.project)
|
|
||||||
.createUltraLightClassForFacade(facadeClassFqName, searchScope, facadeFile)?.let { return it }
|
return CachedValuesManager.getCachedValue(facadeFile) {
|
||||||
|
|
||||||
|
val lightClassDataCache = FacadeStubCache.getInstance(manager.project).get(facadeClassFqName, searchScope)
|
||||||
|
|
||||||
|
val classForFacade = LightClassGenerationSupport.getInstance(facadeFile.project)
|
||||||
|
.createUltraLightClassForFacade(facadeClassFqName, lightClassDataCache, facadeFile)
|
||||||
|
?: KtLightClassForFacade(manager, facadeClassFqName, lightClassDataCache, files)
|
||||||
|
|
||||||
|
CachedValueProvider.Result.create(classForFacade, OUT_OF_CODE_BLOCK_MODIFICATION_COUNT)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val lightClassDataCache = FacadeStubCache.getInstance(manager.project).get(facadeClassFqName, searchScope)
|
val lightClassDataCache = FacadeStubCache.getInstance(manager.project).get(facadeClassFqName, searchScope)
|
||||||
@@ -287,4 +300,14 @@ open class KtLightClassForFacade protected constructor(
|
|||||||
|
|
||||||
override val originKind: LightClassOriginKind
|
override val originKind: LightClassOriginKind
|
||||||
get() = LightClassOriginKind.SOURCE
|
get() = LightClassOriginKind.SOURCE
|
||||||
|
|
||||||
|
override fun getText() = firstFileInFacade.text ?: ""
|
||||||
|
|
||||||
|
override fun getTextRange(): TextRange = firstFileInFacade.textRange ?: TextRange.EMPTY_RANGE
|
||||||
|
|
||||||
|
override fun getTextOffset() = firstFileInFacade.textOffset
|
||||||
|
|
||||||
|
override fun getStartOffsetInParent() = firstFileInFacade.startOffsetInParent
|
||||||
|
|
||||||
|
override fun isWritable() = firstFileInFacade.isWritable
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-12
@@ -5,9 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.asJava.classes
|
package org.jetbrains.kotlin.asJava.classes
|
||||||
|
|
||||||
import com.intellij.psi.PsiClass
|
import com.intellij.psi.*
|
||||||
import com.intellij.psi.PsiElement
|
|
||||||
import com.intellij.psi.PsiManager
|
|
||||||
import com.intellij.psi.util.CachedValue
|
import com.intellij.psi.util.CachedValue
|
||||||
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
|
||||||
@@ -26,7 +24,7 @@ class KtUltraLightClassForFacade(
|
|||||||
private val support: KtUltraLightSupport
|
private val support: KtUltraLightSupport
|
||||||
) : KtLightClassForFacade(manager, facadeClassFqName, lightClassDataCache, listOf(file)) {
|
) : KtLightClassForFacade(manager, facadeClassFqName, lightClassDataCache, listOf(file)) {
|
||||||
|
|
||||||
private val methodsBuilder by lazyPub { UltraLightMembersCreator(this, false, true, support) }
|
private val membersBuilder by lazyPub { UltraLightMembersCreator(this, false, true, support) }
|
||||||
|
|
||||||
private inline fun <T> forTooComplex(getter: () -> T): T {
|
private inline fun <T> forTooComplex(getter: () -> T): T {
|
||||||
check(tooComplex) {
|
check(tooComplex) {
|
||||||
@@ -50,8 +48,8 @@ class KtUltraLightClassForFacade(
|
|||||||
for (declaration in file.declarations.filterNot { it.isHiddenByDeprecation(support) }) {
|
for (declaration in file.declarations.filterNot { it.isHiddenByDeprecation(support) }) {
|
||||||
if (declaration.hasModifier(KtTokens.PRIVATE_KEYWORD)) continue
|
if (declaration.hasModifier(KtTokens.PRIVATE_KEYWORD)) continue
|
||||||
when (declaration) {
|
when (declaration) {
|
||||||
is KtNamedFunction -> result.addAll(methodsBuilder.createMethods(declaration, true))
|
is KtNamedFunction -> result.addAll(membersBuilder.createMethods(declaration, true))
|
||||||
is KtProperty -> result.addAll(methodsBuilder.propertyAccessors(declaration, declaration.isVar, true, false))
|
is KtProperty -> result.addAll(membersBuilder.propertyAccessors(declaration, declaration.isVar, true, false))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,7 +59,7 @@ class KtUltraLightClassForFacade(
|
|||||||
private val ownFieldsForNotTooComplex: List<KtLightField> by lazyPub {
|
private val ownFieldsForNotTooComplex: List<KtLightField> by lazyPub {
|
||||||
hashSetOf<String>().run {
|
hashSetOf<String>().run {
|
||||||
file.declarations.filterIsInstance<KtProperty>().mapNotNull {
|
file.declarations.filterIsInstance<KtProperty>().mapNotNull {
|
||||||
methodsBuilder.createPropertyField(it, this, forceStatic = true)
|
membersBuilder.createPropertyField(it, this, forceStatic = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -70,13 +68,8 @@ class KtUltraLightClassForFacade(
|
|||||||
|
|
||||||
override fun getOwnMethods() = if (!tooComplex) ownMethodsForNotTooComplex else super.getOwnMethods()
|
override fun getOwnMethods() = if (!tooComplex) ownMethodsForNotTooComplex else super.getOwnMethods()
|
||||||
|
|
||||||
override fun hashCode(): Int = file.hashCode()
|
|
||||||
|
|
||||||
override fun toString(): String = "UltraLight class for file facade"
|
override fun toString(): String = "UltraLight class for file facade"
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean = this === other
|
|
||||||
|
|
||||||
override fun copy(): KtLightClassForFacade = KtUltraLightClassForFacade(manager, facadeClassFqName, lightClassDataCache, file, support)
|
override fun copy(): KtLightClassForFacade = KtUltraLightClassForFacade(manager, facadeClassFqName, lightClassDataCache, file, support)
|
||||||
|
|
||||||
override fun setName(name: String): PsiElement? = this
|
|
||||||
}
|
}
|
||||||
@@ -39,7 +39,7 @@ import org.jetbrains.kotlin.types.typeUtil.isAnyOrNullableAny
|
|||||||
open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val support: KtUltraLightSupport) :
|
open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val support: KtUltraLightSupport) :
|
||||||
KtLightClassImpl(classOrObject) {
|
KtLightClassImpl(classOrObject) {
|
||||||
|
|
||||||
private val methodsBuilder by lazyPub {
|
private val membersBuilder by lazyPub {
|
||||||
UltraLightMembersCreator(this, isNamedObject(), classOrObject.hasModifier(SEALED_KEYWORD), support)
|
UltraLightMembersCreator(this, isNamedObject(), classOrObject.hasModifier(SEALED_KEYWORD), support)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,14 +128,14 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
|
|||||||
val usedNames = hashSetOf<String>()
|
val usedNames = hashSetOf<String>()
|
||||||
|
|
||||||
for (parameter in propertyParameters()) {
|
for (parameter in propertyParameters()) {
|
||||||
methodsBuilder.createPropertyField(parameter, usedNames, forceStatic = false)?.let(result::add)
|
membersBuilder.createPropertyField(parameter, usedNames, forceStatic = false)?.let(result::add)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.classOrObject.companionObjects.firstOrNull()?.let { companion ->
|
this.classOrObject.companionObjects.firstOrNull()?.let { companion ->
|
||||||
result.add(
|
result.add(
|
||||||
KtUltraLightField(
|
KtUltraLightField(
|
||||||
companion,
|
companion,
|
||||||
methodsBuilder.generateUniqueFieldName(companion.name.orEmpty(), usedNames),
|
membersBuilder.generateUniqueFieldName(companion.name.orEmpty(), usedNames),
|
||||||
this,
|
this,
|
||||||
support,
|
support,
|
||||||
setOf(PsiModifier.STATIC, PsiModifier.FINAL, PsiModifier.PUBLIC)
|
setOf(PsiModifier.STATIC, PsiModifier.FINAL, PsiModifier.PUBLIC)
|
||||||
@@ -144,7 +144,7 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
|
|||||||
|
|
||||||
for (property in companion.declarations.filterIsInstance<KtProperty>()) {
|
for (property in companion.declarations.filterIsInstance<KtProperty>()) {
|
||||||
if (isInterface && !property.isConstOrJvmField()) continue
|
if (isInterface && !property.isConstOrJvmField()) continue
|
||||||
methodsBuilder.createPropertyField(property, usedNames, true)?.let(result::add)
|
membersBuilder.createPropertyField(property, usedNames, true)?.let(result::add)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,7 +156,7 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
|
|||||||
// Probably, the same should work for const vals but it doesn't at the moment (see KT-28294)
|
// Probably, the same should work for const vals but it doesn't at the moment (see KT-28294)
|
||||||
if (isCompanion && (containingClass?.isInterface == false || property.isJvmField())) continue
|
if (isCompanion && (containingClass?.isInterface == false || property.isJvmField())) continue
|
||||||
|
|
||||||
methodsBuilder.createPropertyField(property, usedNames, forceStatic = this.classOrObject is KtObjectDeclaration)?.let(result::add)
|
membersBuilder.createPropertyField(property, usedNames, forceStatic = this.classOrObject is KtObjectDeclaration)?.let(result::add)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,13 +200,13 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
|
|||||||
for (declaration in this.classOrObject.declarations.filterNot { it.isHiddenByDeprecation(support) }) {
|
for (declaration in this.classOrObject.declarations.filterNot { it.isHiddenByDeprecation(support) }) {
|
||||||
if (declaration.hasModifier(PRIVATE_KEYWORD) && isInterface) continue
|
if (declaration.hasModifier(PRIVATE_KEYWORD) && isInterface) continue
|
||||||
when (declaration) {
|
when (declaration) {
|
||||||
is KtNamedFunction -> result.addAll(methodsBuilder.createMethods(declaration, false))
|
is KtNamedFunction -> result.addAll(membersBuilder.createMethods(declaration, false))
|
||||||
is KtProperty -> result.addAll(methodsBuilder.propertyAccessors(declaration, declaration.isVar, false,false))
|
is KtProperty -> result.addAll(membersBuilder.propertyAccessors(declaration, declaration.isVar, false, false))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (parameter in propertyParameters()) {
|
for (parameter in propertyParameters()) {
|
||||||
result.addAll(methodsBuilder.propertyAccessors(parameter, parameter.isMutable, false,false))
|
result.addAll(membersBuilder.propertyAccessors(parameter, parameter.isMutable, false, false))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isInterface) {
|
if (!isInterface) {
|
||||||
@@ -216,8 +216,8 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
|
|||||||
this.classOrObject.companionObjects.firstOrNull()?.let { companion ->
|
this.classOrObject.companionObjects.firstOrNull()?.let { companion ->
|
||||||
for (declaration in companion.declarations.filterNot { isHiddenByDeprecation(it) }) {
|
for (declaration in companion.declarations.filterNot { isHiddenByDeprecation(it) }) {
|
||||||
when (declaration) {
|
when (declaration) {
|
||||||
is KtNamedFunction -> if (isJvmStatic(declaration)) result.addAll(methodsBuilder.createMethods(declaration, true))
|
is KtNamedFunction -> if (isJvmStatic(declaration)) result.addAll(membersBuilder.createMethods(declaration, true))
|
||||||
is KtProperty -> result.addAll(methodsBuilder.propertyAccessors(declaration, declaration.isVar, false,true))
|
is KtProperty -> result.addAll(membersBuilder.propertyAccessors(declaration, declaration.isVar, false, true))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -298,7 +298,7 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor
|
|||||||
result.add(defaultConstructor())
|
result.add(defaultConstructor())
|
||||||
}
|
}
|
||||||
for (constructor in constructors.filterNot { isHiddenByDeprecation(it) }) {
|
for (constructor in constructors.filterNot { isHiddenByDeprecation(it) }) {
|
||||||
result.addAll(methodsBuilder.createMethods(constructor, false, forcePrivate = isEnum))
|
result.addAll(membersBuilder.createMethods(constructor, false, forcePrivate = isEnum))
|
||||||
}
|
}
|
||||||
val primary = classOrObject.primaryConstructor
|
val primary = classOrObject.primaryConstructor
|
||||||
if (primary != null && shouldGenerateNoArgOverload(primary)) {
|
if (primary != null && shouldGenerateNoArgOverload(primary)) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.asJava.classes
|
package org.jetbrains.kotlin.asJava.classes
|
||||||
|
|
||||||
|
import com.intellij.openapi.util.registry.Registry
|
||||||
import com.intellij.psi.*
|
import com.intellij.psi.*
|
||||||
import com.intellij.psi.impl.cache.ModifierFlags
|
import com.intellij.psi.impl.cache.ModifierFlags
|
||||||
import com.intellij.psi.impl.cache.TypeInfo
|
import com.intellij.psi.impl.cache.TypeInfo
|
||||||
@@ -312,4 +313,4 @@ internal fun KtDeclaration.simpleVisibility(): String = when {
|
|||||||
hasModifier(KtTokens.PRIVATE_KEYWORD) -> PsiModifier.PRIVATE
|
hasModifier(KtTokens.PRIVATE_KEYWORD) -> PsiModifier.PRIVATE
|
||||||
hasModifier(KtTokens.PROTECTED_KEYWORD) -> PsiModifier.PROTECTED
|
hasModifier(KtTokens.PROTECTED_KEYWORD) -> PsiModifier.PROTECTED
|
||||||
else -> PsiModifier.PUBLIC
|
else -> PsiModifier.PUBLIC
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-4
@@ -24,6 +24,7 @@ import com.intellij.openapi.util.text.StringUtil
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
|
import com.intellij.psi.util.CachedValue
|
||||||
import com.intellij.psi.util.CachedValueProvider
|
import com.intellij.psi.util.CachedValueProvider
|
||||||
import com.intellij.psi.util.CachedValuesManager
|
import com.intellij.psi.util.CachedValuesManager
|
||||||
import com.intellij.psi.util.PsiModificationTracker
|
import com.intellij.psi.util.PsiModificationTracker
|
||||||
@@ -178,13 +179,10 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
|
|||||||
|
|
||||||
override fun createUltraLightClassForFacade(
|
override fun createUltraLightClassForFacade(
|
||||||
facadeClassFqName: FqName,
|
facadeClassFqName: FqName,
|
||||||
searchScope: GlobalSearchScope,
|
lightClassDataCache: CachedValue<LightClassDataHolder.ForFacade>,
|
||||||
facadeFile: KtFile
|
facadeFile: KtFile
|
||||||
): KtUltraLightClassForFacade? {
|
): KtUltraLightClassForFacade? {
|
||||||
|
|
||||||
val lightClassDataCache =
|
|
||||||
KtLightClassForFacade.FacadeStubCache.getInstance(project).get(facadeClassFqName, searchScope)
|
|
||||||
|
|
||||||
if (facadeFile.isScript()) return null
|
if (facadeFile.isScript()) return null
|
||||||
|
|
||||||
val module = ModuleUtilCore.findModuleForPsiElement(facadeFile) ?: return null
|
val module = ModuleUtilCore.findModuleForPsiElement(facadeFile) ?: return null
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import com.intellij.testFramework.UsefulTestCase
|
|||||||
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
|
||||||
import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
|
import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
|
||||||
import org.jetbrains.kotlin.asJava.classes.KtUltraLightClass
|
import org.jetbrains.kotlin.asJava.classes.KtUltraLightClass
|
||||||
|
import org.jetbrains.kotlin.asJava.classes.KtUltraLightSupport
|
||||||
import org.jetbrains.kotlin.asJava.classes.isPrivateOrParameterInPrivateMethod
|
import org.jetbrains.kotlin.asJava.classes.isPrivateOrParameterInPrivateMethod
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightNullabilityAnnotation
|
import org.jetbrains.kotlin.asJava.elements.KtLightNullabilityAnnotation
|
||||||
import org.jetbrains.kotlin.load.kotlin.NON_EXISTENT_CLASS_NAME
|
import org.jetbrains.kotlin.load.kotlin.NON_EXISTENT_CLASS_NAME
|
||||||
@@ -20,9 +21,9 @@ import org.jetbrains.kotlin.psi.KtFile
|
|||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
|
|
||||||
fun UsefulTestCase.forceUsingOldLightClassesForTest() {
|
fun UsefulTestCase.forceUsingOldLightClassesForTest() {
|
||||||
KtUltraLightClass.forceUsingOldLightClasses = true
|
KtUltraLightSupport.forceUsingOldLightClasses = true
|
||||||
Disposer.register(testRootDisposable, Disposable {
|
Disposer.register(testRootDisposable, Disposable {
|
||||||
KtUltraLightClass.forceUsingOldLightClasses = false
|
KtUltraLightSupport.forceUsingOldLightClasses = false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user