[SLC] SymbolLightMemberBase: introduce ktModule
fix recursion inside computeJvmMethodName ^KT-54051
This commit is contained in:
committed by
Space Team
parent
0b8b4bfe82
commit
7297c0b941
+5
-3
@@ -10,22 +10,24 @@ import com.intellij.psi.PsiIdentifier
|
||||
import com.intellij.psi.PsiMember
|
||||
import com.intellij.psi.PsiMethod
|
||||
import com.intellij.psi.javadoc.PsiDocComment
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMember
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
|
||||
internal abstract class SymbolLightMemberBase<T : PsiMember>(
|
||||
override val lightMemberOrigin: LightMemberOrigin?,
|
||||
private val containingClass: KtLightClass,
|
||||
private val containingClass: SymbolLightClassBase,
|
||||
) : KtLightElementBase(containingClass), PsiMember, KtLightMember<T> {
|
||||
protected val ktModule: KtModule get() = containingClass.ktModule
|
||||
|
||||
override fun hasModifierProperty(name: String): Boolean = modifierList?.hasModifierProperty(name) ?: false
|
||||
|
||||
override fun toString(): String = "${this::class.java.simpleName}:$name"
|
||||
|
||||
override fun getContainingClass() = containingClass
|
||||
override fun getContainingClass(): SymbolLightClassBase = containingClass
|
||||
|
||||
abstract override fun getNameIdentifier(): PsiIdentifier?
|
||||
|
||||
|
||||
-1
@@ -293,7 +293,6 @@ internal open class SymbolLightClass(classOrObject: KtClassOrObject, ktModule: K
|
||||
enumEntryName = name,
|
||||
containingClass = this@SymbolLightClass,
|
||||
lightMemberOrigin = null,
|
||||
ktModule = ktModule,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -163,7 +163,6 @@ abstract class SymbolLightClassForClassOrObject(protected val classOrObject: KtC
|
||||
isTopLevel = false,
|
||||
forceStatic = true,
|
||||
takePropertyVisibility = it.isConstOrJvmField,
|
||||
ktModule = ktModule,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
-3
@@ -283,7 +283,6 @@ internal fun SymbolLightClassBase.createPropertyAccessors(
|
||||
containingClass = this@createPropertyAccessors,
|
||||
isTopLevel = isTopLevel,
|
||||
suppressStatic = suppressStatic,
|
||||
ktModule = ktModule,
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -309,7 +308,6 @@ internal fun SymbolLightClassBase.createPropertyAccessors(
|
||||
containingClass = this@createPropertyAccessors,
|
||||
isTopLevel = isTopLevel,
|
||||
suppressStatic = suppressStatic,
|
||||
ktModule = ktModule,
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -356,7 +354,6 @@ internal fun SymbolLightClassBase.createField(
|
||||
isTopLevel = isTopLevel,
|
||||
forceStatic = forceStatic,
|
||||
takePropertyVisibility = takePropertyVisibility,
|
||||
ktModule = ktModule,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
+2
-5
@@ -13,7 +13,6 @@ import com.intellij.util.IncorrectOperationException
|
||||
import com.intellij.util.PlatformIcons
|
||||
import org.jetbrains.annotations.NonNls
|
||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
import org.jetbrains.kotlin.asJava.classes.cannotModify
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||
@@ -21,11 +20,12 @@ import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolLightMemberBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.basicIsEquivalentTo
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
import javax.swing.Icon
|
||||
|
||||
internal abstract class SymbolLightField protected constructor(
|
||||
private val containingClass: KtLightClass,
|
||||
containingClass: SymbolLightClassBase,
|
||||
lightMemberOrigin: LightMemberOrigin?,
|
||||
) : SymbolLightMemberBase<PsiField>(lightMemberOrigin, containingClass), KtLightField {
|
||||
override fun setInitializer(initializer: PsiExpression?) = cannotModify()
|
||||
@@ -35,9 +35,6 @@ internal abstract class SymbolLightField protected constructor(
|
||||
|
||||
override fun getLanguage(): Language = KotlinLanguage.INSTANCE
|
||||
|
||||
override fun getParent() = containingClass
|
||||
override fun getContainingClass() = containingClass
|
||||
override fun getContainingFile(): PsiFile? = containingClass.containingFile
|
||||
override fun hasInitializer(): Boolean = initializer !== null
|
||||
|
||||
private val _identifier: PsiIdentifier by lazyPub {
|
||||
|
||||
-2
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.light.classes.symbol.fields
|
||||
import com.intellij.psi.*
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtEnumEntrySymbol
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.cannotModify
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
@@ -28,7 +27,6 @@ internal class SymbolLightFieldForEnumEntry(
|
||||
private val enumEntryName: String,
|
||||
containingClass: SymbolLightClass,
|
||||
override val lightMemberOrigin: LightMemberOrigin?,
|
||||
val ktModule: KtModule,
|
||||
) : SymbolLightField(containingClass, lightMemberOrigin), PsiEnumConstant {
|
||||
internal fun <T> withEnumEntrySymbol(action: KtAnalysisSession.(KtEnumEntrySymbol) -> T): T = analyzeForLightClasses(ktModule) {
|
||||
action(enumEntry.getEnumEntrySymbol())
|
||||
|
||||
+3
-3
@@ -13,10 +13,10 @@ import org.jetbrains.annotations.NotNull
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolLightSimpleAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasDeprecatedAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassForClassOrObject
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.analyzeForLightClasses
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.nonExistentType
|
||||
@@ -25,12 +25,12 @@ import org.jetbrains.kotlin.psi.KtObjectDeclaration
|
||||
|
||||
internal class SymbolLightFieldForObject(
|
||||
private val objectDeclaration: KtObjectDeclaration,
|
||||
containingClass: KtLightClass,
|
||||
containingClass: SymbolLightClassForClassOrObject,
|
||||
private val name: String,
|
||||
lightMemberOrigin: LightMemberOrigin?,
|
||||
) : SymbolLightField(containingClass, lightMemberOrigin) {
|
||||
private fun <T> withObjectDeclarationSymbol(action: KtAnalysisSession.(KtNamedClassOrObjectSymbol) -> T): T =
|
||||
analyzeForLightClasses(objectDeclaration) {
|
||||
analyzeForLightClasses(ktModule) {
|
||||
action(requireNotNull(objectDeclaration.getNamedClassOrObjectSymbol()))
|
||||
}
|
||||
|
||||
|
||||
-2
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.sourcePsiSafe
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtTypeMappingMode
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
@@ -41,7 +40,6 @@ internal class SymbolLightFieldForProperty(
|
||||
isTopLevel: Boolean,
|
||||
forceStatic: Boolean,
|
||||
takePropertyVisibility: Boolean,
|
||||
private val ktModule: KtModule,
|
||||
) : SymbolLightField(containingClass, lightMemberOrigin) {
|
||||
override val kotlinOrigin: KtCallableDeclaration? = propertySymbol.sourcePsiSafe<KtCallableDeclaration>()
|
||||
private val propertySymbolPointer: KtSymbolPointer<KtPropertySymbol> = propertySymbol.createPointer()
|
||||
|
||||
-2
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.analysis.api.KtNonConstantInitializerValue
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.*
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtTypeMappingMode
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.METHOD_INDEX_FOR_GETTER
|
||||
import org.jetbrains.kotlin.asJava.classes.METHOD_INDEX_FOR_SETTER
|
||||
@@ -48,7 +47,6 @@ internal class SymbolLightAccessorMethod(
|
||||
containingClass: SymbolLightClassBase,
|
||||
private val isTopLevel: Boolean,
|
||||
private val suppressStatic: Boolean = false,
|
||||
private val ktModule: KtModule,
|
||||
) : SymbolLightMethodBase(
|
||||
lightMemberOrigin,
|
||||
containingClass,
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ internal abstract class SymbolLightMethod(
|
||||
) : SymbolLightMethodBase(
|
||||
lightMemberOrigin,
|
||||
containingClass,
|
||||
methodIndex
|
||||
methodIndex,
|
||||
) {
|
||||
private var _isVarArgs: Boolean = functionSymbol.valueParameters.any { it.isVararg }
|
||||
|
||||
|
||||
+3
-6
@@ -15,10 +15,8 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotatedSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithVisibility
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
|
||||
import org.jetbrains.kotlin.analysis.project.structure.getKtModule
|
||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.KotlinLightReferenceListBuilder
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
|
||||
import org.jetbrains.kotlin.asJava.classes.cannotModify
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
@@ -34,10 +32,9 @@ import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
|
||||
|
||||
internal abstract class SymbolLightMethodBase(
|
||||
lightMemberOrigin: LightMemberOrigin?,
|
||||
containingClass: KtLightClass,
|
||||
private val methodIndex: Int
|
||||
containingClass: SymbolLightClassBase,
|
||||
private val methodIndex: Int,
|
||||
) : SymbolLightMemberBase<PsiMethod>(lightMemberOrigin, containingClass), KtLightMethod {
|
||||
|
||||
override fun getBody(): PsiCodeBlock? = null
|
||||
|
||||
override fun getReturnTypeElement(): PsiTypeElement? = null
|
||||
@@ -105,7 +102,7 @@ internal abstract class SymbolLightMethodBase(
|
||||
if (containingClass is KtLightClassForFacade) return defaultName
|
||||
if (hasPublishedApiAnnotation(annotationUseSiteTarget)) return defaultName
|
||||
|
||||
val moduleName = (getKtModule(project) as? KtSourceModule)?.moduleName ?: return defaultName
|
||||
val moduleName = (ktModule as? KtSourceModule)?.moduleName ?: return defaultName
|
||||
return mangleInternalName(defaultName, moduleName)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user