[slc] rename fir to symbol
^KT-50241
This commit is contained in:
+2
-2
@@ -51,7 +51,7 @@ import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProviderImpl
|
||||
import org.jetbrains.kotlin.idea.references.KotlinFirReferenceContributor
|
||||
import org.jetbrains.kotlin.idea.references.KotlinReferenceProviderContributor
|
||||
import org.jetbrains.kotlin.idea.references.ReadWriteAccessChecker
|
||||
import org.jetbrains.kotlin.light.classes.symbol.KotlinAsJavaFirSupport
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolKotlinAsJavaSupport
|
||||
import org.jetbrains.kotlin.light.classes.symbol.caches.SymbolLightClassFacadeCache
|
||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||
import org.jetbrains.kotlin.psi.KotlinReferenceProvidersService
|
||||
@@ -157,7 +157,7 @@ public class StandaloneAnalysisAPISessionBuilder(
|
||||
|
||||
registerService(SymbolLightClassFacadeCache::class.java, SymbolLightClassFacadeCache(this))
|
||||
registerService(ClsJavaStubByVirtualFileCache::class.java, ClsJavaStubByVirtualFileCache())
|
||||
registerService(KotlinAsJavaSupport::class.java, KotlinAsJavaFirSupport(this))
|
||||
registerService(KotlinAsJavaSupport::class.java, SymbolKotlinAsJavaSupport(this))
|
||||
registerService(ReadWriteAccessChecker::class.java, ReadWriteAccessCheckerFirImpl())
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -11,9 +11,9 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiElementFinder
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||
import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.references.HLApiReferenceProviderService
|
||||
import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.decompiled.light.classes.ClsJavaStubByVirtualFileCache
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.PackagePartProviderFactory
|
||||
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProvider
|
||||
import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProviderImpl
|
||||
import org.jetbrains.kotlin.idea.references.KotlinFirReferenceContributor
|
||||
import org.jetbrains.kotlin.idea.references.KotlinReferenceProviderContributor
|
||||
import org.jetbrains.kotlin.light.classes.symbol.KotlinAsJavaFirSupport
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolKotlinAsJavaSupport
|
||||
import org.jetbrains.kotlin.light.classes.symbol.caches.SymbolLightClassFacadeCache
|
||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||
import org.jetbrains.kotlin.psi.KotlinReferenceProvidersService
|
||||
@@ -69,7 +69,7 @@ public fun configureApplicationEnvironment(app: MockApplication) {
|
||||
*
|
||||
* In particular, this will register:
|
||||
* * [KtAnalysisSessionProvider]
|
||||
* * [KotlinAsJavaFirSupport]
|
||||
* * [SymbolKotlinAsJavaSupport]
|
||||
* * [SymbolLightClassFacadeCache] for FIR light class support
|
||||
* * [ClsJavaStubByVirtualFileCache]
|
||||
* * [KotlinModificationTrackerFactory]
|
||||
@@ -179,7 +179,7 @@ private fun reRegisterJavaElementFinder(project: Project) {
|
||||
picoContainer.unregisterComponent(KotlinAsJavaSupport::class.qualifiedName)
|
||||
picoContainer.registerComponentInstance(
|
||||
KotlinAsJavaSupport::class.qualifiedName,
|
||||
KotlinAsJavaFirSupport(project)
|
||||
SymbolKotlinAsJavaSupport(project)
|
||||
)
|
||||
}
|
||||
@Suppress("DEPRECATION")
|
||||
|
||||
+5
-4
@@ -10,13 +10,14 @@ import com.intellij.mock.MockProject
|
||||
import com.intellij.psi.PsiElementFinder
|
||||
import com.intellij.psi.impl.PsiElementFinderImpl
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||
import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.api.fir.references.ReadWriteAccessCheckerFirImpl
|
||||
import org.jetbrains.kotlin.analysis.api.session.KtAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirResolveSessionService
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.PackagePartProviderFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.*
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirBuiltinsSessionFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySessionFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.services.KtCompilerPluginsProviderForTests
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.services.LLFirSealedClassInheritorsProcessorFactoryForTests
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.services.PackagePartProviderTestImpl
|
||||
@@ -29,7 +30,7 @@ import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrarAdapter
|
||||
import org.jetbrains.kotlin.idea.references.KotlinFirReferenceContributor
|
||||
import org.jetbrains.kotlin.idea.references.KotlinReferenceProviderContributor
|
||||
import org.jetbrains.kotlin.idea.references.ReadWriteAccessChecker
|
||||
import org.jetbrains.kotlin.light.classes.symbol.KotlinAsJavaFirSupport
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolKotlinAsJavaSupport
|
||||
import org.jetbrains.kotlin.light.classes.symbol.caches.SymbolLightClassFacadeCache
|
||||
import org.jetbrains.kotlin.test.TestInfrastructureInternals
|
||||
import org.jetbrains.kotlin.test.impl.testConfiguration
|
||||
@@ -52,7 +53,7 @@ object AnalysisApiFirTestServiceRegistrar : AnalysisApiTestServiceRegistrar() {
|
||||
registerService(PackagePartProviderFactory::class.java, PackagePartProviderTestImpl(testServices))
|
||||
|
||||
registerService(SymbolLightClassFacadeCache::class.java)
|
||||
registerService(KotlinAsJavaSupport::class.java, KotlinAsJavaFirSupport(project))
|
||||
registerService(KotlinAsJavaSupport::class.java, SymbolKotlinAsJavaSupport(project))
|
||||
registerService(KtCompilerPluginsProvider::class.java, KtCompilerPluginsProviderForTests(project))
|
||||
registerService(ReadWriteAccessChecker::class.java, ReadWriteAccessCheckerFirImpl())
|
||||
}
|
||||
|
||||
+3
-3
@@ -12,12 +12,12 @@ import com.intellij.psi.scope.PsiScopeProcessor
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
import org.jetbrains.kotlin.asJava.classes.getOutermostClassOrObject
|
||||
import org.jetbrains.kotlin.asJava.elements.FakeFileForLightClass
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.getOrCreateFirLightClass
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.getOrCreateSymbolLightClass
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
|
||||
class FirFakeFileImpl(private val classOrObject: KtClassOrObject, ktClass: KtLightClass) : FakeFileForLightClass(
|
||||
class SymbolFakeFile(private val classOrObject: KtClassOrObject, ktClass: KtLightClass) : FakeFileForLightClass(
|
||||
classOrObject.containingKtFile,
|
||||
{ if (classOrObject.isTopLevel()) ktClass else getOrCreateFirLightClass(getOutermostClassOrObject(classOrObject))!! },
|
||||
{ if (classOrObject.isTopLevel()) ktClass else getOrCreateSymbolLightClass(getOutermostClassOrObject(classOrObject))!! },
|
||||
) {
|
||||
|
||||
override fun findReferenceAt(offset: Int) = ktFile.findReferenceAt(offset)
|
||||
+6
-6
@@ -19,9 +19,9 @@ import org.jetbrains.kotlin.asJava.classes.KtFakeLightClass
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName
|
||||
import org.jetbrains.kotlin.light.classes.symbol.caches.SymbolLightClassFacadeCache
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.KtFirBasedFakeLightClass
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolBasedFakeLightClass
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.analyzeForLightClasses
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.getOrCreateFirLightClass
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.getOrCreateSymbolLightClass
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.parentOrNull
|
||||
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtScript
|
||||
|
||||
class KotlinAsJavaFirSupport(private val project: Project) : KotlinAsJavaSupport() {
|
||||
class SymbolKotlinAsJavaSupport(private val project: Project) : KotlinAsJavaSupport() {
|
||||
override fun findClassOrObjectDeclarationsInPackage(
|
||||
packageFqName: FqName,
|
||||
searchScope: GlobalSearchScope
|
||||
@@ -82,7 +82,7 @@ class KotlinAsJavaFirSupport(private val project: Project) : KotlinAsJavaSupport
|
||||
|
||||
override fun getLightClass(classOrObject: KtClassOrObject): KtLightClass? {
|
||||
return when (classOrObject.getKtModule(project)) {
|
||||
is KtSourceModule -> getOrCreateFirLightClass(classOrObject)
|
||||
is KtSourceModule -> getOrCreateSymbolLightClass(classOrObject)
|
||||
is KtLibraryModule -> DecompiledLightClassesFactory.getLightClassForDecompiledClassOrObject(classOrObject, project)
|
||||
else -> null
|
||||
}
|
||||
@@ -101,7 +101,7 @@ class KotlinAsJavaFirSupport(private val project: Project) : KotlinAsJavaSupport
|
||||
error("Should not be called")
|
||||
|
||||
override fun getKotlinInternalClasses(fqName: FqName, scope: GlobalSearchScope): Collection<PsiClass> =
|
||||
emptyList() //TODO Implement if necessary for fir
|
||||
emptyList() //TODO Implement if necessary for symbol
|
||||
|
||||
override fun getFacadeClassesInPackage(packageFqName: FqName, scope: GlobalSearchScope): Collection<PsiClass> =
|
||||
project.createDeclarationProvider(scope)
|
||||
@@ -124,7 +124,7 @@ class KotlinAsJavaFirSupport(private val project: Project) : KotlinAsJavaSupport
|
||||
}
|
||||
|
||||
override fun getFakeLightClass(classOrObject: KtClassOrObject): KtFakeLightClass =
|
||||
KtFirBasedFakeLightClass(classOrObject)
|
||||
SymbolBasedFakeLightClass(classOrObject)
|
||||
|
||||
override fun createFacadeForSyntheticFile(facadeClassFqName: FqName, file: KtFile): PsiClass =
|
||||
TODO("Not implemented")
|
||||
+4
-4
@@ -15,13 +15,13 @@ import org.jetbrains.kotlin.psi.KtPropertyAccessor
|
||||
import org.jetbrains.kotlin.psi.KtSecondaryConstructor
|
||||
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
||||
|
||||
internal class FirLightIdentifier(
|
||||
internal class SymbolLightIdentifier(
|
||||
lightOwner: PsiElement,
|
||||
private val firSymbol: KtSymbol?
|
||||
) : KtLightIdentifierBase(lightOwner, (firSymbol as? KtNamedSymbol)?.name?.identifierOrNullIfSpecial) {
|
||||
private val ktSymbol: KtSymbol?
|
||||
) : KtLightIdentifierBase(lightOwner, (ktSymbol as? KtNamedSymbol)?.name?.identifierOrNullIfSpecial) {
|
||||
|
||||
override val origin: PsiElement?
|
||||
get() = when (val ktDeclaration = firSymbol?.psi) {
|
||||
get() = when (val ktDeclaration = ktSymbol?.psi) {
|
||||
is KtSecondaryConstructor -> ktDeclaration.getConstructorKeyword()
|
||||
is KtPrimaryConstructor -> ktDeclaration.getConstructorKeyword()
|
||||
?: ktDeclaration.valueParameterList
|
||||
+1
-1
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMember
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
|
||||
internal abstract class FirLightMemberImpl<T : PsiMember>(
|
||||
internal abstract class SymbolLightMemberBase<T : PsiMember>(
|
||||
override val lightMemberOrigin: LightMemberOrigin?,
|
||||
private val containingClass: KtLightClass,
|
||||
) : KtLightElementBase(containingClass), PsiMember, KtLightMember<T> {
|
||||
+4
-4
@@ -14,14 +14,14 @@ import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.toAnnotationMemberValue
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
|
||||
internal class FirAnnotationParameterList(
|
||||
parent: FirLightAbstractAnnotation,
|
||||
internal class SymbolAnnotationParameterList(
|
||||
parent: SymbolLightAbstractAnnotation,
|
||||
private val arguments: List<KtNamedAnnotationValue>,
|
||||
) : KtLightElementBase(parent), PsiAnnotationParameterList {
|
||||
|
||||
private val _attributes: Array<PsiNameValuePair> by lazyPub {
|
||||
arguments.map {
|
||||
FirNameValuePairForAnnotationArgument(it, this)
|
||||
SymbolNameValuePairForAnnotationArgument(it, this)
|
||||
}.toTypedArray()
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ internal class FirAnnotationParameterList(
|
||||
//TODO: EQ GHC EQIV
|
||||
}
|
||||
|
||||
private class FirNameValuePairForAnnotationArgument(
|
||||
private class SymbolNameValuePairForAnnotationArgument(
|
||||
private val constantValue: KtNamedAnnotationValue,
|
||||
parent: PsiElement
|
||||
) : KtLightElementBase(parent), PsiNameValuePair {
|
||||
+7
-7
@@ -9,10 +9,10 @@ import com.intellij.psi.*
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
|
||||
internal class FirPsiArrayInitializerMemberValue(
|
||||
internal class SymbolPsiArrayInitializerMemberValue(
|
||||
override val kotlinOrigin: KtElement?,
|
||||
private val lightParent: PsiElement,
|
||||
private val arguments: (FirPsiArrayInitializerMemberValue) -> List<PsiAnnotationMemberValue>
|
||||
private val arguments: (SymbolPsiArrayInitializerMemberValue) -> List<PsiAnnotationMemberValue>
|
||||
) : KtLightElementBase(lightParent), PsiArrayInitializerMemberValue {
|
||||
|
||||
override fun getInitializers(): Array<PsiAnnotationMemberValue> = arguments(this).toTypedArray()
|
||||
@@ -23,7 +23,7 @@ internal class FirPsiArrayInitializerMemberValue(
|
||||
override fun getText(): String = "{" + initializers.joinToString { it.text } + "}"
|
||||
}
|
||||
|
||||
internal abstract class FirPsiAnnotationMemberValue(
|
||||
internal abstract class SymbolPsiAnnotationMemberValue(
|
||||
override val kotlinOrigin: KtElement?,
|
||||
private val lightParent: PsiElement,
|
||||
) : KtLightElementBase(lightParent), PsiAnnotationMemberValue {
|
||||
@@ -32,20 +32,20 @@ internal abstract class FirPsiAnnotationMemberValue(
|
||||
override fun isPhysical(): Boolean = false
|
||||
}
|
||||
|
||||
internal class FirPsiExpression(
|
||||
internal class SymbolPsiExpression(
|
||||
override val kotlinOrigin: KtElement?,
|
||||
lightParent: PsiElement,
|
||||
private val psiExpression: PsiExpression,
|
||||
) : FirPsiAnnotationMemberValue(kotlinOrigin, lightParent), PsiExpression {
|
||||
) : SymbolPsiAnnotationMemberValue(kotlinOrigin, lightParent), PsiExpression {
|
||||
override fun getType(): PsiType? = psiExpression.type
|
||||
override fun getText(): String = psiExpression.text
|
||||
}
|
||||
|
||||
internal class FirPsiLiteral(
|
||||
internal class SymbolPsiLiteral(
|
||||
override val kotlinOrigin: KtElement?,
|
||||
lightParent: PsiElement,
|
||||
private val psiLiteral: PsiLiteral,
|
||||
) : FirPsiAnnotationMemberValue(kotlinOrigin, lightParent), PsiLiteral {
|
||||
) : SymbolPsiAnnotationMemberValue(kotlinOrigin, lightParent), PsiLiteral {
|
||||
override fun getValue(): Any? = psiLiteral.value
|
||||
override fun getText(): String = psiLiteral.text
|
||||
}
|
||||
+7
-7
@@ -10,11 +10,11 @@ import org.jetbrains.kotlin.asJava.classes.cannotModify
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightElement
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.codeReferences.FirLightPsiJavaCodeReferenceElementWithNoReference
|
||||
import org.jetbrains.kotlin.light.classes.symbol.codeReferences.FirLightPsiJavaCodeReferenceElementWithReference
|
||||
import org.jetbrains.kotlin.light.classes.symbol.codeReferences.SymbolLightPsiJavaCodeReferenceElementWithNoReference
|
||||
import org.jetbrains.kotlin.light.classes.symbol.codeReferences.SymbolLightPsiJavaCodeReferenceElementWithReference
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
|
||||
internal abstract class FirLightAbstractAnnotation(parent: PsiElement) :
|
||||
internal abstract class SymbolLightAbstractAnnotation(parent: PsiElement) :
|
||||
KtLightElementBase(parent), PsiAnnotation, KtLightElement<KtCallElement, PsiAnnotation> {
|
||||
|
||||
override fun getOwner() = parent as? PsiAnnotationOwner
|
||||
@@ -30,18 +30,18 @@ internal abstract class FirLightAbstractAnnotation(parent: PsiElement) :
|
||||
val reference = (kotlinOrigin as? KtAnnotationEntry)?.typeReference?.reference
|
||||
?: (kotlinOrigin?.calleeExpression?.nameReference)?.references?.firstOrNull()
|
||||
|
||||
if (reference != null) FirLightPsiJavaCodeReferenceElementWithReference(ktElement, reference)
|
||||
else FirLightPsiJavaCodeReferenceElementWithNoReference(ktElement)
|
||||
if (reference != null) SymbolLightPsiJavaCodeReferenceElementWithReference(ktElement, reference)
|
||||
else SymbolLightPsiJavaCodeReferenceElementWithNoReference(ktElement)
|
||||
}
|
||||
|
||||
override fun getNameReferenceElement(): PsiJavaCodeReferenceElement = _nameReferenceElement
|
||||
|
||||
private class FirAnnotationParameterList(parent: PsiAnnotation) : KtLightElementBase(parent), PsiAnnotationParameterList {
|
||||
private class SymbolAnnotationParameterList(parent: PsiAnnotation) : KtLightElementBase(parent), PsiAnnotationParameterList {
|
||||
override val kotlinOrigin: KtElement? = null
|
||||
override fun getAttributes(): Array<PsiNameValuePair> = emptyArray() //TODO()
|
||||
}
|
||||
|
||||
private val annotationParameterList: PsiAnnotationParameterList = FirAnnotationParameterList(this)
|
||||
private val annotationParameterList: PsiAnnotationParameterList = SymbolAnnotationParameterList(this)
|
||||
|
||||
override fun getParameterList(): PsiAnnotationParameterList = annotationParameterList
|
||||
|
||||
+4
-4
@@ -15,10 +15,10 @@ import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.light.classes.symbol.basicIsEquivalentTo
|
||||
import org.jetbrains.kotlin.psi.KtCallElement
|
||||
|
||||
internal class FirLightAnnotationForAnnotationCall(
|
||||
internal class SymbolLightAnnotationForAnnotationCall(
|
||||
private val annotationCall: KtAnnotationApplication,
|
||||
parent: PsiElement,
|
||||
) : FirLightAbstractAnnotation(parent) {
|
||||
) : SymbolLightAbstractAnnotation(parent) {
|
||||
|
||||
override fun findAttributeValue(attributeName: String?): PsiAnnotationMemberValue? =
|
||||
PsiImplUtil.findAttributeValue(this, attributeName)
|
||||
@@ -27,7 +27,7 @@ internal class FirLightAnnotationForAnnotationCall(
|
||||
PsiImplUtil.findDeclaredAttributeValue(this, attributeName)
|
||||
|
||||
private val _parameterList: PsiAnnotationParameterList by lazyPub {
|
||||
FirAnnotationParameterList(this@FirLightAnnotationForAnnotationCall, annotationCall.arguments)
|
||||
SymbolAnnotationParameterList(this@SymbolLightAnnotationForAnnotationCall, annotationCall.arguments)
|
||||
}
|
||||
|
||||
override fun getParameterList(): PsiAnnotationParameterList = _parameterList
|
||||
@@ -40,7 +40,7 @@ internal class FirLightAnnotationForAnnotationCall(
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightAnnotationForAnnotationCall &&
|
||||
(other is SymbolLightAnnotationForAnnotationCall &&
|
||||
kotlinOrigin == other.kotlinOrigin &&
|
||||
annotationCall == other.annotationCall)
|
||||
|
||||
+4
-4
@@ -13,12 +13,12 @@ import org.jetbrains.kotlin.analysis.api.annotations.KtNamedAnnotationValue
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.psi.KtCallElement
|
||||
|
||||
internal class FirLightSimpleAnnotation(
|
||||
internal class SymbolLightSimpleAnnotation(
|
||||
private val fqName: String?,
|
||||
parent: PsiElement,
|
||||
private val arguments: List<KtNamedAnnotationValue> = listOf(),
|
||||
override val kotlinOrigin: KtCallElement? = null,
|
||||
) : FirLightAbstractAnnotation(parent) {
|
||||
) : SymbolLightAbstractAnnotation(parent) {
|
||||
|
||||
override fun getQualifiedName(): String? = fqName
|
||||
|
||||
@@ -26,7 +26,7 @@ internal class FirLightSimpleAnnotation(
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightSimpleAnnotation && fqName == other.fqName && parent == other.parent)
|
||||
(other is SymbolLightSimpleAnnotation && fqName == other.fqName && parent == other.parent)
|
||||
|
||||
override fun hashCode(): Int = fqName.hashCode()
|
||||
|
||||
@@ -37,7 +37,7 @@ internal class FirLightSimpleAnnotation(
|
||||
PsiImplUtil.findDeclaredAttributeValue(this, attributeName)
|
||||
|
||||
private val _parameterList: PsiAnnotationParameterList by lazyPub {
|
||||
FirAnnotationParameterList(this@FirLightSimpleAnnotation, arguments)
|
||||
SymbolAnnotationParameterList(this@SymbolLightSimpleAnnotation, arguments)
|
||||
}
|
||||
|
||||
override fun getParameterList(): PsiAnnotationParameterList = _parameterList
|
||||
+3
-3
@@ -102,7 +102,7 @@ internal fun KtAnnotatedSymbol.computeAnnotations(
|
||||
NullabilityType.Nullable -> Nullable::class.java
|
||||
else -> null
|
||||
}?.let {
|
||||
FirLightSimpleAnnotation(it.name, parent)
|
||||
SymbolLightSimpleAnnotation(it.name, parent)
|
||||
}
|
||||
|
||||
val parentIsAnnotation = (parent as? PsiClass)?.isAnnotationType == true
|
||||
@@ -127,7 +127,7 @@ internal fun KtAnnotatedSymbol.computeAnnotations(
|
||||
if ((includeAnnotationsWithoutSite && siteTarget == null) ||
|
||||
siteTarget == annotationUseSiteTarget
|
||||
) {
|
||||
result.add(FirLightAnnotationForAnnotationCall(annotation, parent))
|
||||
result.add(SymbolLightAnnotationForAnnotationCall(annotation, parent))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ internal fun KtAnnotatedSymbol.computeAnnotations(
|
||||
}
|
||||
|
||||
private fun createRetentionRuntimeAnnotation(parent: PsiElement): PsiAnnotation =
|
||||
FirLightSimpleAnnotation(
|
||||
SymbolLightSimpleAnnotation(
|
||||
JAVA_LANG_ANNOTATION_RETENTION,
|
||||
parent,
|
||||
listOf(
|
||||
+6
-6
@@ -14,9 +14,9 @@ import org.jetbrains.kotlin.analysis.utils.caches.softCachedValue
|
||||
import org.jetbrains.kotlin.analysis.utils.collections.ConcurrentMapBasedCache
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
|
||||
import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.FirLightClassForFacade
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassForFacade
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.analyzeForLightClasses
|
||||
import org.jetbrains.kotlin.light.classes.symbol.decompiled.KtLightClassForDecompiledFacade
|
||||
import org.jetbrains.kotlin.light.classes.symbol.decompiled.SymbolLightClassForDecompiledFacade
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
@@ -38,11 +38,11 @@ class SymbolLightClassFacadeCache(private val project: Project) {
|
||||
if (ktFilesWithoutScript.isEmpty()) return null
|
||||
val key = FacadeKey(facadeClassFqName, ktFilesWithoutScript.toSet())
|
||||
return cache.getOrPut(key) {
|
||||
getOrCreateFirLightFacadeNoCache(ktFilesWithoutScript, facadeClassFqName)
|
||||
getOrCreateSymbolLightFacadeNoCache(ktFilesWithoutScript, facadeClassFqName)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getOrCreateFirLightFacadeNoCache(
|
||||
private fun getOrCreateSymbolLightFacadeNoCache(
|
||||
ktFiles: List<KtFile>,
|
||||
facadeClassFqName: FqName,
|
||||
): KtLightClassForFacade? {
|
||||
@@ -50,7 +50,7 @@ class SymbolLightClassFacadeCache(private val project: Project) {
|
||||
return when {
|
||||
ktFiles.none { it.isCompiled } ->
|
||||
analyzeForLightClasses(firstFile) {
|
||||
FirLightClassForFacade(firstFile.manager, facadeClassFqName, ktFiles)
|
||||
SymbolLightClassForFacade(firstFile.manager, facadeClassFqName, ktFiles)
|
||||
}
|
||||
|
||||
ktFiles.all { it.isCompiled } -> {
|
||||
@@ -63,7 +63,7 @@ class SymbolLightClassFacadeCache(private val project: Project) {
|
||||
correspondingClassOrObject = classOrObject,
|
||||
project = project,
|
||||
) ?: return null
|
||||
KtLightClassForDecompiledFacade(clsDelegate, clsDelegate.parent, file, classOrObject, ktFiles)
|
||||
SymbolLightClassForDecompiledFacade(clsDelegate, clsDelegate.parent, file, classOrObject, ktFiles)
|
||||
}
|
||||
|
||||
else ->
|
||||
|
||||
+3
-3
@@ -14,13 +14,13 @@ import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
||||
|
||||
//TODO Make fake class symbol based
|
||||
|
||||
class KtFirBasedFakeLightClass(kotlinOrigin: KtClassOrObject) :
|
||||
class SymbolBasedFakeLightClass(kotlinOrigin: KtClassOrObject) :
|
||||
KtFakeLightClass(kotlinOrigin) {
|
||||
|
||||
override fun copy(): KtFakeLightClass = KtFirBasedFakeLightClass(kotlinOrigin)
|
||||
override fun copy(): KtFakeLightClass = SymbolBasedFakeLightClass(kotlinOrigin)
|
||||
|
||||
private val _containingClass: KtFakeLightClass? by lazy {
|
||||
kotlinOrigin.containingClassOrObject?.let { KtFirBasedFakeLightClass(it) }
|
||||
kotlinOrigin.containingClassOrObject?.let { SymbolBasedFakeLightClass(it) }
|
||||
}
|
||||
|
||||
override fun getContainingClass(): KtFakeLightClass? = _containingClass
|
||||
+4
-4
@@ -17,10 +17,10 @@ import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightAnnotationClassSymbol(
|
||||
internal class SymbolLightAnnotationClassSymbol(
|
||||
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||
manager: PsiManager
|
||||
) : FirLightInterfaceOrAnnotationClassSymbol(classOrObjectSymbol, manager) {
|
||||
) : SymbolLightInterfaceOrAnnotationClass(classOrObjectSymbol, manager) {
|
||||
|
||||
init {
|
||||
require(classOrObjectSymbol.classKind == KtClassKind.ANNOTATION_CLASS)
|
||||
@@ -51,12 +51,12 @@ internal class FirLightAnnotationClassSymbol(
|
||||
override fun getExtendsList(): PsiReferenceList? = null
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
other is FirLightAnnotationClassSymbol && classOrObjectSymbol == other.classOrObjectSymbol
|
||||
other is SymbolLightAnnotationClassSymbol && classOrObjectSymbol == other.classOrObjectSymbol
|
||||
|
||||
override fun hashCode(): Int = classOrObjectSymbol.hashCode()
|
||||
|
||||
|
||||
override fun isValid(): Boolean = super.isValid() && classOrObjectSymbol.isValid()
|
||||
|
||||
override fun copy(): FirLightClassForClassOrObjectSymbol = FirLightAnnotationClassSymbol(classOrObjectSymbol, manager)
|
||||
override fun copy(): SymbolLightClassForClassOrObject = SymbolLightAnnotationClassSymbol(classOrObjectSymbol, manager)
|
||||
}
|
||||
+9
-9
@@ -20,19 +20,19 @@ import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
import org.jetbrains.kotlin.light.classes.symbol.FirFakeFileImpl
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolFakeFile
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmFieldAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.FirLightField
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightField
|
||||
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.debugText.getDebugText
|
||||
import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightAnonymousClassForSymbol(
|
||||
internal class SymbolLightAnonymousClassForSymbol(
|
||||
private val anonymousObjectSymbol: KtAnonymousObjectSymbol,
|
||||
manager: PsiManager
|
||||
) : FirLightClassBase(manager),
|
||||
) : SymbolLightClassBase(manager),
|
||||
StubBasedPsiElement<KotlinClassOrObjectStub<out KtClassOrObject>>, PsiAnonymousClass {
|
||||
|
||||
private val _baseClassType: PsiClassType by lazyPub {
|
||||
@@ -68,7 +68,7 @@ internal class FirLightAnonymousClassForSymbol(
|
||||
|
||||
private val _ownFields: List<KtLightField> by lazyPub {
|
||||
val result = mutableListOf<KtLightField>()
|
||||
val nameGenerator = FirLightField.FieldNameGenerator()
|
||||
val nameGenerator = SymbolLightField.FieldNameGenerator()
|
||||
|
||||
anonymousObjectSymbol.getDeclaredMemberScope().getCallableSymbols()
|
||||
.filterIsInstance<KtPropertySymbol>()
|
||||
@@ -86,7 +86,7 @@ internal class FirLightAnonymousClassForSymbol(
|
||||
result
|
||||
}
|
||||
|
||||
private val _ownInnerClasses: List<FirLightClassBase> by lazyPub {
|
||||
private val _ownInnerClasses: List<SymbolLightClassBase> by lazyPub {
|
||||
anonymousObjectSymbol.createInnerClasses(manager, this, kotlinOrigin)
|
||||
}
|
||||
|
||||
@@ -132,19 +132,19 @@ internal class FirLightAnonymousClassForSymbol(
|
||||
//TODO Make containing file not null for symbol without psi
|
||||
private val _containingFile: PsiFile? by lazyPub {
|
||||
val kotlinOrigin = kotlinOrigin ?: return@lazyPub null
|
||||
FirFakeFileImpl(kotlinOrigin, this)
|
||||
SymbolFakeFile(kotlinOrigin, this)
|
||||
}
|
||||
|
||||
override fun getContainingFile(): PsiFile? = _containingFile
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightAnonymousClassForSymbol && anonymousObjectSymbol == other.anonymousObjectSymbol)
|
||||
(other is SymbolLightAnonymousClassForSymbol && anonymousObjectSymbol == other.anonymousObjectSymbol)
|
||||
|
||||
override fun hashCode(): Int = anonymousObjectSymbol.hashCode()
|
||||
|
||||
override fun copy() =
|
||||
FirLightAnonymousClassForSymbol(anonymousObjectSymbol, manager)
|
||||
SymbolLightAnonymousClassForSymbol(anonymousObjectSymbol, manager)
|
||||
|
||||
override fun isValid(): Boolean = super.isValid() && anonymousObjectSymbol.isValid()
|
||||
|
||||
+18
-18
@@ -23,11 +23,11 @@ import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.light.classes.symbol.*
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmFieldAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.FirLightField
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.FirLightFieldForEnumEntry
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.FirLightFieldForObjectSymbol
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.FirLightSimpleMethodForSymbol
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightField
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForEnumEntry
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForObject
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightSimpleMethod
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
@@ -39,10 +39,10 @@ import org.jetbrains.kotlin.util.OperatorNameConventions.TO_STRING
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.applyIf
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal open class FirLightClassForSymbol(
|
||||
internal open class SymbolLightClass(
|
||||
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||
manager: PsiManager
|
||||
) : FirLightClassForClassOrObjectSymbol(classOrObjectSymbol, manager) {
|
||||
) : SymbolLightClassForClassOrObject(classOrObjectSymbol, manager) {
|
||||
|
||||
init {
|
||||
require(classOrObjectSymbol.classKind != KtClassKind.INTERFACE && classOrObjectSymbol.classKind != KtClassKind.ANNOTATION_CLASS)
|
||||
@@ -59,12 +59,12 @@ internal open class FirLightClassForSymbol(
|
||||
}
|
||||
|
||||
val annotations = classOrObjectSymbol.computeAnnotations(
|
||||
parent = this@FirLightClassForSymbol,
|
||||
parent = this@SymbolLightClass,
|
||||
nullability = NullabilityType.Unknown,
|
||||
annotationUseSiteTarget = null,
|
||||
)
|
||||
|
||||
FirLightClassModifierList(this@FirLightClassForSymbol, modifiers, annotations)
|
||||
SymbolLightClassModifierList(this@SymbolLightClass, modifiers, annotations)
|
||||
}
|
||||
|
||||
override fun getModifierList(): PsiModifierList? = _modifierList
|
||||
@@ -120,7 +120,7 @@ internal open class FirLightClassForSymbol(
|
||||
// Similar to `copy`, synthetic members from `Any` should refer to `data` class as origin, not the function in `Any`.
|
||||
val lightMemberOrigin = LightMemberOriginForDeclaration(this.kotlinOrigin!!, JvmDeclarationOriginKind.OTHER)
|
||||
result.add(
|
||||
FirLightSimpleMethodForSymbol(
|
||||
SymbolLightSimpleMethod(
|
||||
ktFunctionSymbol, lightMemberOrigin, this, METHOD_INDEX_BASE, false,
|
||||
suppressStatic = false
|
||||
)
|
||||
@@ -170,7 +170,7 @@ internal open class FirLightClassForSymbol(
|
||||
val kotlinOrigin = ktFunctionSymbol.psi as? KtDeclaration ?: kotlinOrigin!!
|
||||
val lightMemberOrigin = LightMemberOriginForDeclaration(kotlinOrigin, JvmDeclarationOriginKind.DELEGATION)
|
||||
result.add(
|
||||
FirLightSimpleMethodForSymbol(
|
||||
SymbolLightSimpleMethod(
|
||||
ktFunctionSymbol,
|
||||
lightMemberOrigin,
|
||||
this,
|
||||
@@ -220,7 +220,7 @@ internal open class FirLightClassForSymbol(
|
||||
}
|
||||
val propertyGroups = propertySymbols.groupBy { it.isFromPrimaryConstructor }
|
||||
|
||||
val nameGenerator = FirLightField.FieldNameGenerator()
|
||||
val nameGenerator = SymbolLightField.FieldNameGenerator()
|
||||
|
||||
fun addPropertyBackingField(propertySymbol: KtPropertySymbol) {
|
||||
val isJvmField = propertySymbol.hasJvmFieldAnnotation()
|
||||
@@ -248,9 +248,9 @@ internal open class FirLightClassForSymbol(
|
||||
private fun addInstanceFieldIfNeeded(result: MutableList<KtLightField>) {
|
||||
if (classOrObjectSymbol.isNamedObject && !classOrObjectSymbol.isLocal) {
|
||||
result.add(
|
||||
FirLightFieldForObjectSymbol(
|
||||
SymbolLightFieldForObject(
|
||||
objectSymbol = classOrObjectSymbol,
|
||||
containingClass = this@FirLightClassForSymbol,
|
||||
containingClass = this@SymbolLightClass,
|
||||
name = JvmAbi.INSTANCE_FIELD,
|
||||
lightMemberOrigin = null
|
||||
)
|
||||
@@ -262,7 +262,7 @@ internal open class FirLightClassForSymbol(
|
||||
if (isEnum) {
|
||||
classOrObjectSymbol.getDeclaredMemberScope().getCallableSymbols()
|
||||
.filterIsInstance<KtEnumEntrySymbol>()
|
||||
.mapTo(result) { FirLightFieldForEnumEntry(it, this@FirLightClassForSymbol, null) }
|
||||
.mapTo(result) { SymbolLightFieldForEnumEntry(it, this@SymbolLightClass, null) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -278,7 +278,7 @@ internal open class FirLightClassForSymbol(
|
||||
override fun hashCode(): Int = classOrObjectSymbol.hashCode()
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other || (other is FirLightClassForSymbol && classOrObjectSymbol == other.classOrObjectSymbol)
|
||||
this === other || (other is SymbolLightClass && classOrObjectSymbol == other.classOrObjectSymbol)
|
||||
|
||||
override fun isInterface(): Boolean = false
|
||||
|
||||
@@ -287,8 +287,8 @@ internal open class FirLightClassForSymbol(
|
||||
override fun isEnum(): Boolean =
|
||||
classOrObjectSymbol.classKind == KtClassKind.ENUM_CLASS
|
||||
|
||||
override fun copy(): FirLightClassForSymbol =
|
||||
FirLightClassForSymbol(classOrObjectSymbol, manager)
|
||||
override fun copy(): SymbolLightClass =
|
||||
SymbolLightClass(classOrObjectSymbol, manager)
|
||||
|
||||
override fun isValid(): Boolean = super.isValid() && classOrObjectSymbol.isValid()
|
||||
}
|
||||
+5
-5
@@ -27,10 +27,10 @@ import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import javax.swing.Icon
|
||||
|
||||
context(KtAnalysisSession)
|
||||
abstract class FirLightClassBase protected constructor(
|
||||
abstract class SymbolLightClassBase protected constructor(
|
||||
manager: PsiManager
|
||||
) : LightElement(manager, KotlinLanguage.INSTANCE), PsiClass, KtExtensibleLightClass {
|
||||
private class FirLightClassesLazyCreator(private val project: Project) : KotlinClassInnerStuffCache.LazyCreator() {
|
||||
private class SymbolLightClassesLazyCreator(private val project: Project) : KotlinClassInnerStuffCache.LazyCreator() {
|
||||
@OptIn(KtAllowAnalysisOnEdt::class)
|
||||
override fun <T : Any> get(initializer: () -> T, dependencies: List<Any>): Lazy<T> = object : Lazy<T> {
|
||||
private val cachedValue = PsiCachedValueImpl(PsiManager.getInstance(project)) {
|
||||
@@ -50,9 +50,9 @@ abstract class FirLightClassBase protected constructor(
|
||||
}
|
||||
|
||||
private val myInnersCache = KotlinClassInnerStuffCache(
|
||||
myClass = this@FirLightClassBase,
|
||||
myClass = this@SymbolLightClassBase,
|
||||
dependencies = listOf(manager.project.createProjectWideOutOfBlockModificationTracker()),
|
||||
lazyCreator = FirLightClassesLazyCreator(project)
|
||||
lazyCreator = SymbolLightClassesLazyCreator(project)
|
||||
)
|
||||
|
||||
override fun getFields(): Array<PsiField> = myInnersCache.fields
|
||||
@@ -169,7 +169,7 @@ abstract class FirLightClassBase protected constructor(
|
||||
override fun getInitializers(): Array<PsiClassInitializer> = PsiClassInitializer.EMPTY_ARRAY
|
||||
|
||||
override fun getElementIcon(flags: Int): Icon? =
|
||||
throw UnsupportedOperationException("This should be done by KotlinFirIconProvider")
|
||||
throw UnsupportedOperationException("This should be done by KotlinIconProvider")
|
||||
|
||||
override fun getVisibleSignatures(): MutableCollection<HierarchicalMethodSignature> = PsiSuperMethodImplUtil.getVisibleSignatures(this)
|
||||
|
||||
+20
-16
@@ -21,12 +21,16 @@ import org.jetbrains.kotlin.asJava.classes.getParentForLocalDeclaration
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
import org.jetbrains.kotlin.light.classes.symbol.*
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolFakeFile
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.allowLightClassesOnEdt
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasDeprecatedAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmFieldAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmStaticAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.FirLightFieldForObjectSymbol
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.FirLightFieldForPropertySymbol
|
||||
import org.jetbrains.kotlin.light.classes.symbol.basicIsEquivalentTo
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForObject
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForProperty
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightTypeParameterList
|
||||
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
|
||||
import org.jetbrains.kotlin.psi.KtClassBody
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
@@ -38,10 +42,10 @@ import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
internal abstract class SymbolLightClassForClassOrObject(
|
||||
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||
manager: PsiManager
|
||||
) : FirLightClassBase(manager),
|
||||
) : SymbolLightClassBase(manager),
|
||||
StubBasedPsiElement<KotlinClassOrObjectStub<out KtClassOrObject>> {
|
||||
|
||||
protected val isTopLevel: Boolean = classOrObjectSymbol.symbolKind == KtSymbolKind.TOP_LEVEL
|
||||
@@ -60,7 +64,7 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
abstract override fun getOwnMethods(): List<PsiMethod>
|
||||
|
||||
private val _identifier: PsiIdentifier by lazyPub {
|
||||
FirLightIdentifier(this, classOrObjectSymbol)
|
||||
SymbolLightIdentifier(this, classOrObjectSymbol)
|
||||
}
|
||||
|
||||
override fun getNameIdentifier(): PsiIdentifier? = _identifier
|
||||
@@ -70,7 +74,7 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
|
||||
private val _typeParameterList: PsiTypeParameterList? by lazyPub {
|
||||
hasTypeParameters().ifTrue {
|
||||
FirLightTypeParameterListForSymbol(
|
||||
SymbolLightTypeParameterList(
|
||||
owner = this,
|
||||
symbolWithTypeParameterList = classOrObjectSymbol,
|
||||
)
|
||||
@@ -84,7 +88,7 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
override fun getTypeParameters(): Array<PsiTypeParameter> =
|
||||
_typeParameterList?.typeParameters ?: PsiTypeParameter.EMPTY_ARRAY
|
||||
|
||||
private val _ownInnerClasses: List<FirLightClassBase> by lazyPub {
|
||||
private val _ownInnerClasses: List<SymbolLightClassBase> by lazyPub {
|
||||
classOrObjectSymbol.createInnerClasses(manager, this, kotlinOrigin)
|
||||
}
|
||||
|
||||
@@ -118,9 +122,9 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
protected fun addCompanionObjectFieldIfNeeded(result: MutableList<KtLightField>) {
|
||||
classOrObjectSymbol.companionObject?.run {
|
||||
result.add(
|
||||
FirLightFieldForObjectSymbol(
|
||||
SymbolLightFieldForObject(
|
||||
objectSymbol = this,
|
||||
containingClass = this@FirLightClassForClassOrObjectSymbol,
|
||||
containingClass = this@SymbolLightClassForClassOrObject,
|
||||
name = name.asString(),
|
||||
lightMemberOrigin = null
|
||||
)
|
||||
@@ -136,10 +140,10 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
filter { it.hasJvmFieldAnnotation() || it.isConst }
|
||||
}
|
||||
.mapTo(result) {
|
||||
FirLightFieldForPropertySymbol(
|
||||
SymbolLightFieldForProperty(
|
||||
propertySymbol = it,
|
||||
fieldName = it.name.asString(),
|
||||
containingClass = this@FirLightClassForClassOrObjectSymbol,
|
||||
containingClass = this@SymbolLightClassForClassOrObject,
|
||||
lightMemberOrigin = null,
|
||||
isTopLevel = false,
|
||||
forceStatic = true,
|
||||
@@ -156,9 +160,9 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
|
||||
val kotlinOrigin = kotlinOrigin ?: return@lazyPub null
|
||||
|
||||
val containingClass = isTopLevel.ifFalse { getOrCreateFirLightClass(getOutermostClassOrObject(kotlinOrigin)) } ?: this
|
||||
val containingClass = isTopLevel.ifFalse { getOrCreateSymbolLightClass(getOutermostClassOrObject(kotlinOrigin)) } ?: this
|
||||
|
||||
FirFakeFileImpl(kotlinOrigin, containingClass)
|
||||
SymbolFakeFile(kotlinOrigin, containingClass)
|
||||
}
|
||||
|
||||
override fun getContainingFile(): PsiFile? = _containingFile
|
||||
@@ -205,7 +209,7 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
override fun getContainingClass(): PsiClass? {
|
||||
val containingBody = kotlinOrigin?.parent as? KtClassBody
|
||||
val containingClass = containingBody?.parent as? KtClassOrObject
|
||||
containingClass?.let { return getOrCreateFirLightClass(it) }
|
||||
containingClass?.let { return getOrCreateSymbolLightClass(it) }
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -221,5 +225,5 @@ internal abstract class FirLightClassForClassOrObjectSymbol(
|
||||
override fun isInheritorDeep(baseClass: PsiClass?, classToByPass: PsiClass?): Boolean =
|
||||
baseClass?.let { InheritanceImplUtil.isInheritorDeep(this, it, classToByPass) } ?: false
|
||||
|
||||
abstract override fun copy(): FirLightClassForClassOrObjectSymbol
|
||||
abstract override fun copy(): SymbolLightClassForClassOrObject
|
||||
}
|
||||
+13
-13
@@ -14,26 +14,26 @@ import org.jetbrains.kotlin.analysis.api.types.KtTypeMappingMode
|
||||
import org.jetbrains.kotlin.asJava.classes.KotlinSuperTypeListBuilder
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
import org.jetbrains.kotlin.light.classes.symbol.codeReferences.FirLightPsiJavaCodeReferenceElementWithNoReference
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.FirLightFieldForEnumEntry
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.codeReferences.SymbolLightPsiJavaCodeReferenceElementWithNoReference
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForEnumEntry
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightClassForEnumEntry(
|
||||
internal class SymbolLightClassForEnumEntry(
|
||||
private val enumEntrySymbol: KtEnumEntrySymbol,
|
||||
private val enumConstant: FirLightFieldForEnumEntry,
|
||||
private val enumClass: FirLightClassForSymbol,
|
||||
private val enumConstant: SymbolLightFieldForEnumEntry,
|
||||
private val enumClass: SymbolLightClass,
|
||||
manager: PsiManager
|
||||
) : FirLightClassBase(manager), PsiEnumConstantInitializer {
|
||||
) : SymbolLightClassBase(manager), PsiEnumConstantInitializer {
|
||||
|
||||
override fun getName(): String? = enumEntrySymbol.name.asString()
|
||||
|
||||
override fun getBaseClassType(): PsiClassType = enumConstant.type as PsiClassType //???TODO
|
||||
|
||||
override fun getBaseClassReference(): PsiJavaCodeReferenceElement =
|
||||
FirLightPsiJavaCodeReferenceElementWithNoReference(enumConstant) //???TODO
|
||||
SymbolLightPsiJavaCodeReferenceElementWithNoReference(enumConstant) //???TODO
|
||||
|
||||
override fun getArgumentList(): PsiExpressionList? = null
|
||||
|
||||
@@ -42,21 +42,21 @@ internal class FirLightClassForEnumEntry(
|
||||
override fun isInQualifiedNew(): Boolean = false
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
other is FirLightClassForEnumEntry &&
|
||||
other is SymbolLightClassForEnumEntry &&
|
||||
this.enumEntrySymbol == other.enumEntrySymbol
|
||||
|
||||
override fun hashCode(): Int =
|
||||
enumEntrySymbol.hashCode()
|
||||
|
||||
override fun copy(): PsiElement =
|
||||
FirLightClassForEnumEntry(enumEntrySymbol, enumConstant, enumClass, manager)
|
||||
SymbolLightClassForEnumEntry(enumEntrySymbol, enumConstant, enumClass, manager)
|
||||
|
||||
override fun toString(): String = "FirLightClassForEnumEntry for $name"
|
||||
override fun toString(): String = "SymbolLightClassForEnumEntry:$name"
|
||||
|
||||
override fun getNameIdentifier(): PsiIdentifier? = null //TODO
|
||||
|
||||
private val _modifierList: PsiModifierList by lazyPub {
|
||||
FirLightClassModifierList(
|
||||
SymbolLightClassModifierList(
|
||||
containingDeclaration = this,
|
||||
modifiers = setOf(PsiModifier.PUBLIC, PsiModifier.STATIC, PsiModifier.FINAL),
|
||||
annotations = emptyList()
|
||||
@@ -86,7 +86,7 @@ internal class FirLightClassForEnumEntry(
|
||||
|
||||
private val _extendsList: PsiReferenceList? by lazyPub {
|
||||
val mappedType =
|
||||
enumEntrySymbol.returnType.asPsiType(this@FirLightClassForEnumEntry, KtTypeMappingMode.SUPER_TYPE) as? PsiClassType
|
||||
enumEntrySymbol.returnType.asPsiType(this@SymbolLightClassForEnumEntry, KtTypeMappingMode.SUPER_TYPE) as? PsiClassType
|
||||
?: return@lazyPub null
|
||||
|
||||
|
||||
+13
-13
@@ -30,8 +30,8 @@ import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasInlineOnlyAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmFieldAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmMultifileClassAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.FirLightField
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightField
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.toPsiVisibilityForMember
|
||||
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
@@ -39,11 +39,11 @@ import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
context(KtAnalysisSession)
|
||||
class FirLightClassForFacade(
|
||||
class SymbolLightClassForFacade(
|
||||
manager: PsiManager,
|
||||
override val facadeClassFqName: FqName,
|
||||
override val files: Collection<KtFile>
|
||||
) : FirLightClassBase(manager), KtLightClassForFacade {
|
||||
) : SymbolLightClassBase(manager), KtLightClassForFacade {
|
||||
|
||||
init {
|
||||
require(files.isNotEmpty())
|
||||
@@ -71,14 +71,14 @@ class FirLightClassForFacade(
|
||||
|
||||
val annotations = fileSymbols.flatMap {
|
||||
it.computeAnnotations(
|
||||
this@FirLightClassForFacade,
|
||||
this@SymbolLightClassForFacade,
|
||||
NullabilityType.Unknown,
|
||||
AnnotationUseSiteTarget.FILE,
|
||||
includeAnnotationsWithoutSite = false
|
||||
)
|
||||
}
|
||||
|
||||
FirLightClassModifierList(this@FirLightClassForFacade, modifiers, annotations)
|
||||
SymbolLightClassModifierList(this@SymbolLightClassForFacade, modifiers, annotations)
|
||||
}
|
||||
|
||||
override fun getModifierList(): PsiModifierList = _modifierList
|
||||
@@ -111,7 +111,7 @@ class FirLightClassForFacade(
|
||||
|
||||
private fun loadFieldsFromFile(
|
||||
fileScope: KtScope,
|
||||
nameGenerator: FirLightField.FieldNameGenerator,
|
||||
nameGenerator: SymbolLightField.FieldNameGenerator,
|
||||
result: MutableList<KtLightField>
|
||||
) {
|
||||
for (propertySymbol in fileScope.getCallableSymbols()) {
|
||||
@@ -147,7 +147,7 @@ class FirLightClassForFacade(
|
||||
|
||||
private val _ownFields: List<KtLightField> by lazyPub {
|
||||
val result = mutableListOf<KtLightField>()
|
||||
val nameGenerator = FirLightField.FieldNameGenerator()
|
||||
val nameGenerator = SymbolLightField.FieldNameGenerator()
|
||||
for (fileSymbol in fileSymbols) {
|
||||
loadFieldsFromFile(fileSymbol.getFileScope(), nameGenerator, result)
|
||||
}
|
||||
@@ -158,8 +158,8 @@ class FirLightClassForFacade(
|
||||
|
||||
override fun getOwnMethods() = _ownMethods
|
||||
|
||||
override fun copy(): FirLightClassForFacade =
|
||||
FirLightClassForFacade(manager, facadeClassFqName, files)
|
||||
override fun copy(): SymbolLightClassForFacade =
|
||||
SymbolLightClassForFacade(manager, facadeClassFqName, files)
|
||||
|
||||
private val packageFqName: FqName =
|
||||
facadeClassFqName.parent()
|
||||
@@ -230,7 +230,7 @@ class FirLightClassForFacade(
|
||||
override fun getNavigationElement() = firstFileInFacade
|
||||
|
||||
override fun isEquivalentTo(another: PsiElement?): Boolean =
|
||||
equals(another) || another is FirLightClassForFacade && another.qualifiedName == qualifiedName
|
||||
equals(another) || another is SymbolLightClassForFacade && another.qualifiedName == qualifiedName
|
||||
|
||||
override fun isInheritor(baseClass: PsiClass, checkDeep: Boolean): Boolean {
|
||||
return baseClass.qualifiedName == CommonClassNames.JAVA_LANG_OBJECT
|
||||
@@ -247,7 +247,7 @@ class FirLightClassForFacade(
|
||||
arrayOf(PsiType.getJavaLangObject(manager, resolveScope))
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (other !is FirLightClassForFacade) return false
|
||||
if (other !is SymbolLightClassForFacade) return false
|
||||
if (this === other) return true
|
||||
|
||||
if (this.hashCode() != other.hashCode()) return false
|
||||
@@ -260,7 +260,7 @@ class FirLightClassForFacade(
|
||||
|
||||
override fun hashCode() = facadeClassFqName.hashCode()
|
||||
|
||||
override fun toString() = "${FirLightClassForFacade::class.java.simpleName}:$facadeClassFqName"
|
||||
override fun toString() = "${SymbolLightClassForFacade::class.java.simpleName}:$facadeClassFqName"
|
||||
|
||||
override val originKind: LightClassOriginKind
|
||||
get() = LightClassOriginKind.SOURCE
|
||||
+6
-6
@@ -10,29 +10,29 @@ import com.intellij.util.IncorrectOperationException
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightClassForInterfaceDefaultImpls(
|
||||
internal class SymbolLightClassForInterfaceDefaultImpls(
|
||||
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||
private val containingClass: FirLightClassBase,
|
||||
private val containingClass: SymbolLightClassBase,
|
||||
manager: PsiManager
|
||||
) : FirLightInterfaceClassSymbol(classOrObjectSymbol, manager) {
|
||||
) : SymbolLightInterfaceClass(classOrObjectSymbol, manager) {
|
||||
override fun getQualifiedName(): String? = containingClass.qualifiedName?.let { it + ".${JvmAbi.DEFAULT_IMPLS_CLASS_NAME}" }
|
||||
|
||||
override fun getName() = JvmAbi.DEFAULT_IMPLS_CLASS_NAME
|
||||
override fun getParent() = containingClass
|
||||
|
||||
override fun copy() =
|
||||
FirLightClassForInterfaceDefaultImpls(classOrObjectSymbol, containingClass, manager)
|
||||
SymbolLightClassForInterfaceDefaultImpls(classOrObjectSymbol, containingClass, manager)
|
||||
|
||||
override fun getTypeParameterList(): PsiTypeParameterList? = null
|
||||
override fun getTypeParameters(): Array<PsiTypeParameter> = emptyArray()
|
||||
|
||||
private val _modifierList: PsiModifierList? by lazyPub {
|
||||
val modifiers = setOf(PsiModifier.PUBLIC, PsiModifier.STATIC, PsiModifier.FINAL)
|
||||
FirLightClassModifierList(this@FirLightClassForInterfaceDefaultImpls, modifiers, emptyList())
|
||||
SymbolLightClassModifierList(this@SymbolLightClassForInterfaceDefaultImpls, modifiers, emptyList())
|
||||
}
|
||||
|
||||
override fun getModifierList(): PsiModifierList? = _modifierList
|
||||
+3
-4
@@ -17,10 +17,10 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
import org.jetbrains.kotlin.resolve.deprecation.DeprecationLevelValue
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightInlineClass(
|
||||
internal class SymbolLightInlineClass(
|
||||
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||
manager: PsiManager
|
||||
) : FirLightClassForSymbol(classOrObjectSymbol, manager) {
|
||||
) : SymbolLightClass(classOrObjectSymbol, manager) {
|
||||
|
||||
init {
|
||||
require(classOrObjectSymbol.isInline)
|
||||
@@ -61,6 +61,5 @@ internal class FirLightInlineClass(
|
||||
|
||||
override fun getOwnFields(): List<KtLightField> = emptyList()
|
||||
|
||||
override fun copy(): FirLightInlineClass =
|
||||
FirLightInlineClass(classOrObjectSymbol, manager)
|
||||
override fun copy(): SymbolLightInlineClass = SymbolLightInlineClass(classOrObjectSymbol, manager)
|
||||
}
|
||||
+4
-5
@@ -19,10 +19,10 @@ import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal open class FirLightInterfaceClassSymbol(
|
||||
internal open class SymbolLightInterfaceClass(
|
||||
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||
manager: PsiManager
|
||||
) : FirLightInterfaceOrAnnotationClassSymbol(classOrObjectSymbol, manager) {
|
||||
) : SymbolLightInterfaceOrAnnotationClass(classOrObjectSymbol, manager) {
|
||||
|
||||
init {
|
||||
require(classOrObjectSymbol.classKind == KtClassKind.INTERFACE)
|
||||
@@ -52,14 +52,13 @@ internal open class FirLightInterfaceClassSymbol(
|
||||
override fun getOwnMethods(): List<PsiMethod> = _ownMethods
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
other === this || (other is FirLightInterfaceClassSymbol && classOrObjectSymbol == other.classOrObjectSymbol)
|
||||
other === this || (other is SymbolLightInterfaceClass && classOrObjectSymbol == other.classOrObjectSymbol)
|
||||
|
||||
override fun hashCode(): Int = classOrObjectSymbol.hashCode()
|
||||
|
||||
override fun isAnnotationType(): Boolean = false
|
||||
|
||||
override fun copy(): FirLightClassForClassOrObjectSymbol =
|
||||
FirLightInterfaceClassSymbol(classOrObjectSymbol, manager)
|
||||
override fun copy(): SymbolLightClassForClassOrObject = SymbolLightInterfaceClass(classOrObjectSymbol, manager)
|
||||
|
||||
private val _extendsList: PsiReferenceList by lazyPub {
|
||||
createInheritanceList(forExtendsList = true, classOrObjectSymbol.superTypes)
|
||||
+5
-5
@@ -16,14 +16,14 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtNamedClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.light.classes.symbol.NullabilityType
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.toPsiVisibilityForClass
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal abstract class FirLightInterfaceOrAnnotationClassSymbol(
|
||||
internal abstract class SymbolLightInterfaceOrAnnotationClass(
|
||||
private val classOrObjectSymbol: KtNamedClassOrObjectSymbol,
|
||||
manager: PsiManager
|
||||
) : FirLightClassForClassOrObjectSymbol(classOrObjectSymbol, manager) {
|
||||
) : SymbolLightClassForClassOrObject(classOrObjectSymbol, manager) {
|
||||
|
||||
init {
|
||||
require(
|
||||
@@ -41,12 +41,12 @@ internal abstract class FirLightInterfaceOrAnnotationClassSymbol(
|
||||
}
|
||||
|
||||
val annotations = classOrObjectSymbol.computeAnnotations(
|
||||
parent = this@FirLightInterfaceOrAnnotationClassSymbol,
|
||||
parent = this@SymbolLightInterfaceOrAnnotationClass,
|
||||
nullability = NullabilityType.Unknown,
|
||||
annotationUseSiteTarget = null,
|
||||
)
|
||||
|
||||
FirLightClassModifierList(this@FirLightInterfaceOrAnnotationClassSymbol, modifiers, annotations)
|
||||
SymbolLightClassModifierList(this@SymbolLightInterfaceOrAnnotationClass, modifiers, annotations)
|
||||
}
|
||||
|
||||
override fun getModifierList(): PsiModifierList? = _modifierList
|
||||
+41
-41
@@ -34,13 +34,13 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.lexer.KtTokens.*
|
||||
import org.jetbrains.kotlin.light.classes.symbol.*
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.*
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.FirLightField
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.FirLightFieldForEnumEntry
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.FirLightFieldForPropertySymbol
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.FirLightAccessorMethodForSymbol
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.FirLightConstructorForSymbol
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.FirLightNoArgConstructor
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.FirLightSimpleMethodForSymbol
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightField
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForEnumEntry
|
||||
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForProperty
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightAccessorMethod
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightConstructor
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightNoArgConstructor
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightSimpleMethod
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
@@ -48,17 +48,17 @@ import org.jetbrains.kotlin.psi.psiUtil.containingClass
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind
|
||||
import java.util.*
|
||||
|
||||
internal fun getOrCreateFirLightClass(classOrObject: KtClassOrObject): KtLightClass? =
|
||||
internal fun getOrCreateSymbolLightClass(classOrObject: KtClassOrObject): KtLightClass? =
|
||||
CachedValuesManager.getCachedValue(classOrObject) {
|
||||
CachedValueProvider.Result
|
||||
.create(
|
||||
createFirLightClassNoCache(classOrObject),
|
||||
createSymbolLightClassNoCache(classOrObject),
|
||||
classOrObject.project.createProjectWideOutOfBlockModificationTracker()
|
||||
)
|
||||
}
|
||||
|
||||
@OptIn(KtAllowAnalysisOnEdt::class)
|
||||
internal fun createFirLightClassNoCache(classOrObject: KtClassOrObject): KtLightClass? = allowAnalysisOnEdt {
|
||||
internal fun createSymbolLightClassNoCache(classOrObject: KtClassOrObject): KtLightClass? = allowAnalysisOnEdt {
|
||||
|
||||
val containingFile = classOrObject.containingFile
|
||||
if (containingFile is KtCodeFragment) {
|
||||
@@ -86,7 +86,7 @@ internal fun createFirLightClassNoCache(classOrObject: KtClassOrObject): KtLight
|
||||
|
||||
classOrObject.hasModifier(INLINE_KEYWORD) -> {
|
||||
analyzeForLightClasses(classOrObject) {
|
||||
classOrObject.getNamedClassOrObjectSymbol()?.let { FirLightInlineClass(it, classOrObject.manager) }
|
||||
classOrObject.getNamedClassOrObjectSymbol()?.let { SymbolLightInlineClass(it, classOrObject.manager) }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,12 +100,12 @@ internal fun createFirLightClassNoCache(classOrObject: KtClassOrObject): KtLight
|
||||
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal fun KtClassOrObjectSymbol.createLightClassNoCache(manager: PsiManager): FirLightClassBase = when (this) {
|
||||
is KtAnonymousObjectSymbol -> FirLightAnonymousClassForSymbol(this, manager)
|
||||
internal fun KtClassOrObjectSymbol.createLightClassNoCache(manager: PsiManager): SymbolLightClassBase = when (this) {
|
||||
is KtAnonymousObjectSymbol -> SymbolLightAnonymousClassForSymbol(this, manager)
|
||||
is KtNamedClassOrObjectSymbol -> when (classKind) {
|
||||
KtClassKind.INTERFACE -> FirLightInterfaceClassSymbol(this, manager)
|
||||
KtClassKind.ANNOTATION_CLASS -> FirLightAnnotationClassSymbol(this, manager)
|
||||
else -> FirLightClassForSymbol(this, manager)
|
||||
KtClassKind.INTERFACE -> SymbolLightInterfaceClass(this, manager)
|
||||
KtClassKind.ANNOTATION_CLASS -> SymbolLightAnnotationClassSymbol(this, manager)
|
||||
else -> SymbolLightClass(this, manager)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,20 +113,20 @@ context(KtAnalysisSession)
|
||||
private fun lightClassForEnumEntry(ktEnumEntry: KtEnumEntry): KtLightClass? {
|
||||
if (ktEnumEntry.body == null) return null
|
||||
|
||||
val firClass = ktEnumEntry
|
||||
val symbolLightClass = ktEnumEntry
|
||||
.containingClass()
|
||||
?.let { getOrCreateFirLightClass(it) } as? FirLightClassForSymbol
|
||||
?.let { getOrCreateSymbolLightClass(it) } as? SymbolLightClass
|
||||
?: return null
|
||||
|
||||
val targetField = firClass.ownFields
|
||||
.firstOrNull { it is FirLightFieldForEnumEntry && it.kotlinOrigin == ktEnumEntry }
|
||||
val targetField = symbolLightClass.ownFields
|
||||
.firstOrNull { it is SymbolLightFieldForEnumEntry && it.kotlinOrigin == ktEnumEntry }
|
||||
?: return null
|
||||
|
||||
return (targetField as? FirLightFieldForEnumEntry)?.initializingClass as? KtLightClass
|
||||
return (targetField as? SymbolLightFieldForEnumEntry)?.initializingClass as? KtLightClass
|
||||
}
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal fun FirLightClassBase.createConstructors(
|
||||
internal fun SymbolLightClassBase.createConstructors(
|
||||
declarations: Sequence<KtConstructorSymbol>,
|
||||
result: MutableList<KtLightMethod>
|
||||
) {
|
||||
@@ -138,7 +138,7 @@ internal fun FirLightClassBase.createConstructors(
|
||||
for (constructor in constructors) {
|
||||
if (constructor.isHiddenOrSynthetic()) continue
|
||||
result.add(
|
||||
FirLightConstructorForSymbol(
|
||||
SymbolLightConstructor(
|
||||
constructorSymbol = constructor,
|
||||
lightMemberOrigin = null,
|
||||
containingClass = this@createConstructors,
|
||||
@@ -155,7 +155,7 @@ internal fun FirLightClassBase.createConstructors(
|
||||
}
|
||||
|
||||
context(KtAnalysisSession)
|
||||
private fun FirLightClassBase.shouldGenerateNoArgOverload(
|
||||
private fun SymbolLightClassBase.shouldGenerateNoArgOverload(
|
||||
primaryConstructor: KtConstructorSymbol,
|
||||
constructors: Iterable<KtConstructorSymbol>,
|
||||
): Boolean {
|
||||
@@ -170,7 +170,7 @@ private fun FirLightClassBase.shouldGenerateNoArgOverload(
|
||||
}
|
||||
|
||||
context(KtAnalysisSession)
|
||||
private fun FirLightClassBase.defaultConstructor(): KtLightMethod {
|
||||
private fun SymbolLightClassBase.defaultConstructor(): KtLightMethod {
|
||||
val classOrObject = kotlinOrigin
|
||||
val visibility = when {
|
||||
classOrObject is KtObjectDeclaration || classOrObject?.hasModifier(SEALED_KEYWORD) == true || isEnum -> PsiModifier.PRIVATE
|
||||
@@ -181,11 +181,11 @@ private fun FirLightClassBase.defaultConstructor(): KtLightMethod {
|
||||
}
|
||||
|
||||
context(KtAnalysisSession)
|
||||
private fun FirLightClassBase.noArgConstructor(
|
||||
private fun SymbolLightClassBase.noArgConstructor(
|
||||
visibility: String,
|
||||
methodIndex: Int,
|
||||
): KtLightMethod {
|
||||
return FirLightNoArgConstructor(
|
||||
return SymbolLightNoArgConstructor(
|
||||
LightMemberOriginForDeclaration(
|
||||
originalElement = kotlinOrigin!!,
|
||||
originKind = JvmDeclarationOriginKind.OTHER,
|
||||
@@ -198,7 +198,7 @@ private fun FirLightClassBase.noArgConstructor(
|
||||
}
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal fun FirLightClassBase.createMethods(
|
||||
internal fun SymbolLightClassBase.createMethods(
|
||||
declarations: Sequence<KtCallableSymbol>,
|
||||
result: MutableList<KtLightMethod>,
|
||||
isTopLevel: Boolean = false,
|
||||
@@ -216,7 +216,7 @@ internal fun FirLightClassBase.createMethods(
|
||||
|
||||
var methodIndex = METHOD_INDEX_BASE
|
||||
result.add(
|
||||
FirLightSimpleMethodForSymbol(
|
||||
SymbolLightSimpleMethod(
|
||||
functionSymbol = declaration,
|
||||
lightMemberOrigin = null,
|
||||
containingClass = this@createMethods,
|
||||
@@ -236,7 +236,7 @@ internal fun FirLightClassBase.createMethods(
|
||||
skipMask.set(i)
|
||||
|
||||
result.add(
|
||||
FirLightSimpleMethodForSymbol(
|
||||
SymbolLightSimpleMethod(
|
||||
declaration, null, this@createMethods, methodIndex++, isTopLevel, skipMask.copy()
|
||||
)
|
||||
)
|
||||
@@ -267,7 +267,7 @@ internal fun FirLightClassBase.createMethods(
|
||||
}
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal fun FirLightClassBase.createPropertyAccessors(
|
||||
internal fun SymbolLightClassBase.createPropertyAccessors(
|
||||
result: MutableList<KtLightMethod>,
|
||||
declaration: KtPropertySymbol,
|
||||
isTopLevel: Boolean,
|
||||
@@ -309,7 +309,7 @@ internal fun FirLightClassBase.createPropertyAccessors(
|
||||
}
|
||||
|
||||
result.add(
|
||||
FirLightAccessorMethodForSymbol(
|
||||
SymbolLightAccessorMethod(
|
||||
propertyAccessorSymbol = getter,
|
||||
containingPropertySymbol = declaration,
|
||||
lightMemberOrigin = lightMemberOrigin,
|
||||
@@ -333,7 +333,7 @@ internal fun FirLightClassBase.createPropertyAccessors(
|
||||
)
|
||||
}
|
||||
result.add(
|
||||
FirLightAccessorMethodForSymbol(
|
||||
SymbolLightAccessorMethod(
|
||||
propertyAccessorSymbol = setter,
|
||||
containingPropertySymbol = declaration,
|
||||
lightMemberOrigin = lightMemberOrigin,
|
||||
@@ -346,9 +346,9 @@ internal fun FirLightClassBase.createPropertyAccessors(
|
||||
}
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal fun FirLightClassBase.createField(
|
||||
internal fun SymbolLightClassBase.createField(
|
||||
declaration: KtPropertySymbol,
|
||||
nameGenerator: FirLightField.FieldNameGenerator,
|
||||
nameGenerator: SymbolLightField.FieldNameGenerator,
|
||||
isTopLevel: Boolean,
|
||||
forceStatic: Boolean,
|
||||
takePropertyVisibility: Boolean,
|
||||
@@ -377,7 +377,7 @@ internal fun FirLightClassBase.createField(
|
||||
)
|
||||
|
||||
result.add(
|
||||
FirLightFieldForPropertySymbol(
|
||||
SymbolLightFieldForProperty(
|
||||
propertySymbol = declaration,
|
||||
fieldName = fieldName,
|
||||
containingClass = this,
|
||||
@@ -390,7 +390,7 @@ internal fun FirLightClassBase.createField(
|
||||
}
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal fun FirLightClassBase.createInheritanceList(forExtendsList: Boolean, superTypes: List<KtType>): PsiReferenceList {
|
||||
internal fun SymbolLightClassBase.createInheritanceList(forExtendsList: Boolean, superTypes: List<KtType>): PsiReferenceList {
|
||||
|
||||
val role = if (forExtendsList) PsiReferenceList.Role.EXTENDS_LIST else PsiReferenceList.Role.IMPLEMENTS_LIST
|
||||
|
||||
@@ -434,10 +434,10 @@ internal fun FirLightClassBase.createInheritanceList(forExtendsList: Boolean, su
|
||||
context(KtAnalysisSession)
|
||||
internal fun KtSymbolWithMembers.createInnerClasses(
|
||||
manager: PsiManager,
|
||||
containingClass: FirLightClassBase,
|
||||
containingClass: SymbolLightClassBase,
|
||||
classOrObject: KtClassOrObject?
|
||||
): List<FirLightClassBase> {
|
||||
val result = ArrayList<FirLightClassBase>()
|
||||
): List<SymbolLightClassBase> {
|
||||
val result = ArrayList<SymbolLightClassBase>()
|
||||
|
||||
// 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
|
||||
@@ -456,7 +456,7 @@ internal fun KtSymbolWithMembers.createInnerClasses(
|
||||
classOrObject?.hasInterfaceDefaultImpls == true &&
|
||||
jvmDefaultMode != JvmDefaultMode.ALL_INCOMPATIBLE
|
||||
) {
|
||||
result.add(FirLightClassForInterfaceDefaultImpls(this, containingClass, manager))
|
||||
result.add(SymbolLightClassForInterfaceDefaultImpls(this, containingClass, manager))
|
||||
}
|
||||
return result
|
||||
}
|
||||
+1
-1
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.light.classes.symbol.codeReferences
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.scope.PsiScopeProcessor
|
||||
|
||||
internal abstract class FirLightPsiJavaCodeReferenceElementBase(private val ktElement: PsiElement) :
|
||||
internal abstract class SymbolLightPsiJavaCodeReferenceElementBase(private val ktElement: PsiElement) :
|
||||
PsiElement by ktElement,
|
||||
PsiJavaCodeReferenceElement {
|
||||
|
||||
+3
-3
@@ -10,8 +10,8 @@ import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiReference
|
||||
import com.intellij.util.IncorrectOperationException
|
||||
|
||||
internal class FirLightPsiJavaCodeReferenceElementWithNoReference(private val ktElement: PsiElement) :
|
||||
FirLightPsiJavaCodeReferenceElementBase(ktElement),
|
||||
internal class SymbolLightPsiJavaCodeReferenceElementWithNoReference(private val ktElement: PsiElement) :
|
||||
SymbolLightPsiJavaCodeReferenceElementBase(ktElement),
|
||||
PsiReference {
|
||||
|
||||
override fun getElement(): PsiElement = ktElement
|
||||
@@ -26,7 +26,7 @@ internal class FirLightPsiJavaCodeReferenceElementWithNoReference(private val kt
|
||||
|
||||
@Throws(IncorrectOperationException::class)
|
||||
override fun bindToElement(element: PsiElement): PsiElement =
|
||||
throw IncorrectOperationException("can't rename FirLightPsiJavaCodeReferenceElementWithNoReference")
|
||||
throw IncorrectOperationException("can't rename SymbolLightPsiJavaCodeReferenceElementWithNoReference")
|
||||
|
||||
override fun isReferenceTo(element: PsiElement): Boolean = false
|
||||
|
||||
+2
-2
@@ -8,8 +8,8 @@ package org.jetbrains.kotlin.light.classes.symbol.codeReferences
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiReference
|
||||
|
||||
internal class FirLightPsiJavaCodeReferenceElementWithReference(private val ktElement: PsiElement, reference: PsiReference) :
|
||||
FirLightPsiJavaCodeReferenceElementBase(ktElement),
|
||||
internal class SymbolLightPsiJavaCodeReferenceElementWithReference(private val ktElement: PsiElement, reference: PsiReference) :
|
||||
SymbolLightPsiJavaCodeReferenceElementBase(ktElement),
|
||||
PsiReference by reference {
|
||||
|
||||
override fun getElement(): PsiElement = ktElement
|
||||
+1
-1
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
internal class KtLightClassForDecompiledFacade(
|
||||
internal class SymbolLightClassForDecompiledFacade(
|
||||
clsDelegate: PsiClass,
|
||||
clsParent: PsiElement,
|
||||
file: KtClsFile,
|
||||
+3
-3
@@ -17,15 +17,15 @@ import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
import org.jetbrains.kotlin.asJava.classes.cannotModify
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightField
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.light.classes.symbol.FirLightMemberImpl
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolLightMemberBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.basicIsEquivalentTo
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
import javax.swing.Icon
|
||||
|
||||
internal abstract class FirLightField protected constructor(
|
||||
internal abstract class SymbolLightField protected constructor(
|
||||
private val containingClass: KtLightClass,
|
||||
lightMemberOrigin: LightMemberOrigin?,
|
||||
) : FirLightMemberImpl<PsiField>(lightMemberOrigin, containingClass), KtLightField {
|
||||
) : SymbolLightMemberBase<PsiField>(lightMemberOrigin, containingClass), KtLightField {
|
||||
override fun setInitializer(initializer: PsiExpression?) = cannotModify()
|
||||
|
||||
override fun isEquivalentTo(another: PsiElement?): Boolean =
|
||||
+14
-16
@@ -12,24 +12,24 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtEnumEntrySymbol
|
||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.cannotModify
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.light.classes.symbol.FirLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.FirLightClassForEnumEntry
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.FirLightClassForSymbol
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClass
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassForEnumEntry
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.nonExistentType
|
||||
import org.jetbrains.kotlin.psi.KtEnumEntry
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightFieldForEnumEntry(
|
||||
internal class SymbolLightFieldForEnumEntry(
|
||||
private val enumEntrySymbol: KtEnumEntrySymbol,
|
||||
containingClass: FirLightClassForSymbol,
|
||||
containingClass: SymbolLightClass,
|
||||
override val lightMemberOrigin: LightMemberOrigin?
|
||||
) : FirLightField(containingClass, lightMemberOrigin), PsiEnumConstant {
|
||||
) : SymbolLightField(containingClass, lightMemberOrigin), PsiEnumConstant {
|
||||
|
||||
private val _modifierList by lazyPub {
|
||||
FirLightMemberModifierList(
|
||||
containingDeclaration = this@FirLightFieldForEnumEntry,
|
||||
SymbolLightMemberModifierList(
|
||||
containingDeclaration = this@SymbolLightFieldForEnumEntry,
|
||||
modifiers = setOf(PsiModifier.STATIC, PsiModifier.FINAL, PsiModifier.PUBLIC),
|
||||
annotations = emptyList()
|
||||
)
|
||||
@@ -46,9 +46,9 @@ internal class FirLightFieldForEnumEntry(
|
||||
|
||||
private val _initializingClass: PsiEnumConstantInitializer? by lazyPub {
|
||||
hasBody.ifTrue {
|
||||
FirLightClassForEnumEntry(
|
||||
SymbolLightClassForEnumEntry(
|
||||
enumEntrySymbol = enumEntrySymbol,
|
||||
enumConstant = this@FirLightFieldForEnumEntry,
|
||||
enumConstant = this@SymbolLightFieldForEnumEntry,
|
||||
enumClass = containingClass,
|
||||
manager = manager
|
||||
)
|
||||
@@ -71,7 +71,7 @@ internal class FirLightFieldForEnumEntry(
|
||||
override fun getName(): String = enumEntrySymbol.name.asString()
|
||||
|
||||
private val _type: PsiType by lazyPub {
|
||||
enumEntrySymbol.returnType.asPsiType(this@FirLightFieldForEnumEntry) ?: nonExistentType()
|
||||
enumEntrySymbol.returnType.asPsiType(this@SymbolLightFieldForEnumEntry) ?: nonExistentType()
|
||||
}
|
||||
|
||||
override fun getType(): PsiType = _type
|
||||
@@ -80,7 +80,7 @@ internal class FirLightFieldForEnumEntry(
|
||||
override fun hashCode(): Int = enumEntrySymbol.hashCode()
|
||||
|
||||
private val _identifier: PsiIdentifier by lazyPub {
|
||||
FirLightIdentifier(this, enumEntrySymbol)
|
||||
SymbolLightIdentifier(this, enumEntrySymbol)
|
||||
}
|
||||
|
||||
override fun getNameIdentifier(): PsiIdentifier = _identifier
|
||||
@@ -88,7 +88,5 @@ internal class FirLightFieldForEnumEntry(
|
||||
override fun isValid(): Boolean = super.isValid() && enumEntrySymbol.isValid()
|
||||
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
other is FirLightFieldForEnumEntry &&
|
||||
enumEntrySymbol == other.enumEntrySymbol
|
||||
override fun equals(other: Any?): Boolean = other is SymbolLightFieldForEnumEntry && enumEntrySymbol == other.enumEntrySymbol
|
||||
}
|
||||
+10
-10
@@ -13,21 +13,21 @@ 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.FirLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.FirLightSimpleAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolLightIdentifier
|
||||
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.modifierLists.FirLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.nonExistentType
|
||||
import org.jetbrains.kotlin.light.classes.symbol.toPsiVisibilityForMember
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightFieldForObjectSymbol(
|
||||
internal class SymbolLightFieldForObject(
|
||||
private val objectSymbol: KtNamedClassOrObjectSymbol,
|
||||
containingClass: KtLightClass,
|
||||
private val name: String,
|
||||
lightMemberOrigin: LightMemberOrigin?,
|
||||
) : FirLightField(containingClass, lightMemberOrigin) {
|
||||
) : SymbolLightField(containingClass, lightMemberOrigin) {
|
||||
|
||||
override val kotlinOrigin: KtDeclaration? = objectSymbol.psi as? KtDeclaration
|
||||
|
||||
@@ -35,8 +35,8 @@ internal class FirLightFieldForObjectSymbol(
|
||||
|
||||
private val _modifierList: PsiModifierList by lazyPub {
|
||||
val modifiers = setOf(objectSymbol.toPsiVisibilityForMember(isTopLevel = false), PsiModifier.STATIC, PsiModifier.FINAL)
|
||||
val notNullAnnotation = FirLightSimpleAnnotation(NotNull::class.java.name, this)
|
||||
FirLightMemberModifierList(this, modifiers, listOf(notNullAnnotation))
|
||||
val notNullAnnotation = SymbolLightSimpleAnnotation(NotNull::class.java.name, this)
|
||||
SymbolLightMemberModifierList(this, modifiers, listOf(notNullAnnotation))
|
||||
}
|
||||
|
||||
private val _isDeprecated: Boolean by lazyPub {
|
||||
@@ -48,12 +48,12 @@ internal class FirLightFieldForObjectSymbol(
|
||||
override fun getModifierList(): PsiModifierList? = _modifierList
|
||||
|
||||
private val _type: PsiType by lazyPub {
|
||||
objectSymbol.buildSelfClassType().asPsiType(this@FirLightFieldForObjectSymbol)
|
||||
objectSymbol.buildSelfClassType().asPsiType(this@SymbolLightFieldForObject)
|
||||
?: nonExistentType()
|
||||
}
|
||||
|
||||
private val _identifier: PsiIdentifier by lazyPub {
|
||||
FirLightIdentifier(this, objectSymbol)
|
||||
SymbolLightIdentifier(this, objectSymbol)
|
||||
}
|
||||
|
||||
override fun getNameIdentifier(): PsiIdentifier = _identifier
|
||||
@@ -65,7 +65,7 @@ internal class FirLightFieldForObjectSymbol(
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightFieldForObjectSymbol &&
|
||||
(other is SymbolLightFieldForObject &&
|
||||
kotlinOrigin == other.kotlinOrigin &&
|
||||
objectSymbol == other.objectSymbol)
|
||||
|
||||
+10
-10
@@ -20,23 +20,23 @@ import org.jetbrains.kotlin.light.classes.symbol.*
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasDeprecatedAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.FirLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
|
||||
import org.jetbrains.kotlin.name.JvmNames.TRANSIENT_ANNOTATION_CLASS_ID
|
||||
import org.jetbrains.kotlin.name.JvmNames.VOLATILE_ANNOTATION_CLASS_ID
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtProperty
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightFieldForPropertySymbol(
|
||||
internal class SymbolLightFieldForProperty(
|
||||
private val propertySymbol: KtPropertySymbol,
|
||||
private val fieldName: String,
|
||||
containingClass: FirLightClassBase,
|
||||
containingClass: SymbolLightClassBase,
|
||||
lightMemberOrigin: LightMemberOrigin?,
|
||||
isTopLevel: Boolean,
|
||||
forceStatic: Boolean,
|
||||
takePropertyVisibility: Boolean
|
||||
) : FirLightField(containingClass, lightMemberOrigin) {
|
||||
) : SymbolLightField(containingClass, lightMemberOrigin) {
|
||||
|
||||
override val kotlinOrigin: KtDeclaration? = propertySymbol.psi as? KtDeclaration
|
||||
|
||||
@@ -45,11 +45,11 @@ internal class FirLightFieldForPropertySymbol(
|
||||
when {
|
||||
isDelegated ->
|
||||
(kotlinOrigin as? KtProperty)?.delegateExpression?.let {
|
||||
it.getKtType()?.asPsiType(this@FirLightFieldForPropertySymbol, KtTypeMappingMode.RETURN_TYPE)
|
||||
it.getKtType()?.asPsiType(this@SymbolLightFieldForProperty, KtTypeMappingMode.RETURN_TYPE)
|
||||
}
|
||||
|
||||
else -> {
|
||||
propertySymbol.returnType.asPsiType(this@FirLightFieldForPropertySymbol, KtTypeMappingMode.RETURN_TYPE)
|
||||
propertySymbol.returnType.asPsiType(this@SymbolLightFieldForProperty, KtTypeMappingMode.RETURN_TYPE)
|
||||
}
|
||||
} ?: nonExistentType()
|
||||
}
|
||||
@@ -61,7 +61,7 @@ internal class FirLightFieldForPropertySymbol(
|
||||
override fun isDeprecated(): Boolean = _isDeprecated
|
||||
|
||||
private val _identifier: PsiIdentifier by lazyPub {
|
||||
FirLightIdentifier(this, propertySymbol)
|
||||
SymbolLightIdentifier(this, propertySymbol)
|
||||
}
|
||||
|
||||
override fun getNameIdentifier(): PsiIdentifier = _identifier
|
||||
@@ -110,7 +110,7 @@ internal class FirLightFieldForPropertySymbol(
|
||||
annotationUseSiteTarget = AnnotationUseSiteTarget.FIELD,
|
||||
)
|
||||
|
||||
FirLightMemberModifierList(this, modifiers, annotations)
|
||||
SymbolLightMemberModifierList(this, modifiers, annotations)
|
||||
}
|
||||
|
||||
override fun getModifierList(): PsiModifierList = _modifierList
|
||||
@@ -127,7 +127,7 @@ internal class FirLightFieldForPropertySymbol(
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightFieldForPropertySymbol &&
|
||||
(other is SymbolLightFieldForProperty &&
|
||||
kotlinOrigin == other.kotlinOrigin &&
|
||||
propertySymbol == other.propertySymbol)
|
||||
|
||||
+15
-15
@@ -20,10 +20,10 @@ import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.getJvmNameFromAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasDeprecatedAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmStaticAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.FirLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.FirLightParameterList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.FirLightSetterParameterForSymbol
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightParameterList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightSetterParameter
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi.getterName
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi.setterName
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
@@ -31,14 +31,14 @@ import org.jetbrains.kotlin.psi.KtParameter
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightAccessorMethodForSymbol(
|
||||
internal class SymbolLightAccessorMethod(
|
||||
private val propertyAccessorSymbol: KtPropertyAccessorSymbol,
|
||||
private val containingPropertySymbol: KtPropertySymbol,
|
||||
lightMemberOrigin: LightMemberOrigin?,
|
||||
containingClass: FirLightClassBase,
|
||||
containingClass: SymbolLightClassBase,
|
||||
private val isTopLevel: Boolean,
|
||||
private val suppressStatic: Boolean = false,
|
||||
) : FirLightMethod(
|
||||
) : SymbolLightMethodBase(
|
||||
lightMemberOrigin,
|
||||
containingClass,
|
||||
if (propertyAccessorSymbol is KtPropertyGetterSymbol) METHOD_INDEX_FOR_GETTER else METHOD_INDEX_FOR_SETTER
|
||||
@@ -73,7 +73,7 @@ internal class FirLightAccessorMethodForSymbol(
|
||||
if (propertyAccessorSymbol is KtPropertyGetterSymbol) AnnotationUseSiteTarget.PROPERTY_GETTER
|
||||
else AnnotationUseSiteTarget.PROPERTY_SETTER
|
||||
|
||||
//TODO Fix it when KtFirConstructorValueParameterSymbol be ready
|
||||
//TODO Fix it when SymbolConstructorValueParameter be ready
|
||||
private val isParameter: Boolean get() = containingPropertySymbol.psi.let { it == null || it is KtParameter }
|
||||
|
||||
private fun computeAnnotations(isPrivate: Boolean): List<PsiAnnotation> {
|
||||
@@ -135,7 +135,7 @@ internal class FirLightAccessorMethodForSymbol(
|
||||
private val _modifierList: PsiModifierList by lazyPub {
|
||||
val modifiers = computeModifiers()
|
||||
val annotations = computeAnnotations(modifiers.contains(PsiModifier.PRIVATE))
|
||||
FirLightMemberModifierList(this, modifiers, annotations)
|
||||
SymbolLightMemberModifierList(this, modifiers, annotations)
|
||||
}
|
||||
|
||||
override fun getModifierList(): PsiModifierList = _modifierList
|
||||
@@ -149,7 +149,7 @@ internal class FirLightAccessorMethodForSymbol(
|
||||
override fun isDeprecated(): Boolean = _isDeprecated
|
||||
|
||||
private val _identifier: PsiIdentifier by lazyPub {
|
||||
FirLightIdentifier(this, containingPropertySymbol)
|
||||
SymbolLightIdentifier(this, containingPropertySymbol)
|
||||
}
|
||||
|
||||
override fun getNameIdentifier(): PsiIdentifier = _identifier
|
||||
@@ -157,7 +157,7 @@ internal class FirLightAccessorMethodForSymbol(
|
||||
private val _returnedType: PsiType by lazyPub {
|
||||
if (!isGetter) return@lazyPub PsiType.VOID
|
||||
containingPropertySymbol.returnType.asPsiType(
|
||||
this@FirLightAccessorMethodForSymbol,
|
||||
this@SymbolLightAccessorMethod,
|
||||
KtTypeMappingMode.RETURN_TYPE,
|
||||
containingClass.isAnnotationType
|
||||
) ?: nonExistentType()
|
||||
@@ -167,7 +167,7 @@ internal class FirLightAccessorMethodForSymbol(
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightAccessorMethodForSymbol &&
|
||||
(other is SymbolLightAccessorMethod &&
|
||||
isGetter == other.isGetter &&
|
||||
kotlinOrigin == other.kotlinOrigin &&
|
||||
propertyAccessorSymbol == other.propertyAccessorSymbol)
|
||||
@@ -176,12 +176,12 @@ internal class FirLightAccessorMethodForSymbol(
|
||||
|
||||
|
||||
private val _parametersList by lazyPub {
|
||||
FirLightParameterList(this, containingPropertySymbol) { builder ->
|
||||
SymbolLightParameterList(this, containingPropertySymbol) { builder ->
|
||||
val propertyParameter = (propertyAccessorSymbol as? KtPropertySetterSymbol)?.parameter
|
||||
if (propertyParameter != null) {
|
||||
builder.addParameter(
|
||||
FirLightSetterParameterForSymbol(
|
||||
containingPropertySymbol, propertyParameter, this@FirLightAccessorMethodForSymbol
|
||||
SymbolLightSetterParameter(
|
||||
containingPropertySymbol, propertyParameter, this@SymbolLightAccessorMethod
|
||||
)
|
||||
)
|
||||
}
|
||||
+9
-9
@@ -14,18 +14,18 @@ import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.light.classes.symbol.NullabilityType
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasDeprecatedAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.FirLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.FirLightClassForEnumEntry
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassForEnumEntry
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.toPsiVisibilityForMember
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightConstructorForSymbol(
|
||||
internal class SymbolLightConstructor(
|
||||
private val constructorSymbol: KtConstructorSymbol,
|
||||
lightMemberOrigin: LightMemberOrigin?,
|
||||
containingClass: FirLightClassBase,
|
||||
containingClass: SymbolLightClassBase,
|
||||
methodIndex: Int,
|
||||
) : FirLightMethodForSymbol(constructorSymbol, lightMemberOrigin, containingClass, methodIndex) {
|
||||
) : SymbolLightMethod(constructorSymbol, lightMemberOrigin, containingClass, methodIndex) {
|
||||
|
||||
private val _name: String? = containingClass.name
|
||||
|
||||
@@ -56,14 +56,14 @@ internal class FirLightConstructorForSymbol(
|
||||
// On the other hand, FE 1.0 doesn't add anything; then ULC adds default ctor w/ package local visibility.
|
||||
// Technically, an enum entry should not be instantiated anywhere else, and thus FIR's modeling makes sense.
|
||||
// But, to be backward compatible, we manually force the visibility of enum entry ctor to be package private.
|
||||
if (containingClass is FirLightClassForEnumEntry)
|
||||
if (containingClass is SymbolLightClassForEnumEntry)
|
||||
setOf(PsiModifier.PACKAGE_LOCAL)
|
||||
else
|
||||
setOf(constructorSymbol.toPsiVisibilityForMember(isTopLevel = false))
|
||||
}
|
||||
|
||||
private val _modifierList: PsiModifierList by lazyPub {
|
||||
FirLightMemberModifierList(this, _modifiers, _annotations)
|
||||
SymbolLightMemberModifierList(this, _modifiers, _annotations)
|
||||
}
|
||||
|
||||
override fun getModifierList(): PsiModifierList = _modifierList
|
||||
@@ -72,7 +72,7 @@ internal class FirLightConstructorForSymbol(
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightConstructorForSymbol &&
|
||||
(other is SymbolLightConstructor &&
|
||||
kotlinOrigin == other.kotlinOrigin &&
|
||||
constructorSymbol == other.constructorSymbol)
|
||||
|
||||
+14
-14
@@ -13,22 +13,22 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionLikeSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol
|
||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.light.classes.symbol.FirLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.FirLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.FirLightParameterForSymbol
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.FirLightParameterList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.FirLightSuspendContinuationParameter
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightParameter
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightParameterList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightSuspendContinuationParameter
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import java.util.*
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal abstract class FirLightMethodForSymbol(
|
||||
internal abstract class SymbolLightMethod(
|
||||
private val functionSymbol: KtFunctionLikeSymbol,
|
||||
lightMemberOrigin: LightMemberOrigin?,
|
||||
containingClass: FirLightClassBase,
|
||||
containingClass: SymbolLightClassBase,
|
||||
methodIndex: Int,
|
||||
argumentsSkipMask: BitSet? = null
|
||||
) : FirLightMethod(
|
||||
) : SymbolLightMethodBase(
|
||||
lightMemberOrigin,
|
||||
containingClass,
|
||||
methodIndex
|
||||
@@ -38,23 +38,23 @@ internal abstract class FirLightMethodForSymbol(
|
||||
override fun isVarArgs(): Boolean = _isVarArgs
|
||||
|
||||
private val _parametersList by lazyPub {
|
||||
FirLightParameterList(this, functionSymbol) { builder ->
|
||||
SymbolLightParameterList(this, functionSymbol) { builder ->
|
||||
functionSymbol.valueParameters.mapIndexed { index, parameter ->
|
||||
val needToSkip = argumentsSkipMask?.get(index) == true
|
||||
if (!needToSkip) {
|
||||
builder.addParameter(
|
||||
FirLightParameterForSymbol(
|
||||
SymbolLightParameter(
|
||||
parameterSymbol = parameter,
|
||||
containingMethod = this@FirLightMethodForSymbol
|
||||
containingMethod = this@SymbolLightMethod
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
if ((functionSymbol as? KtFunctionSymbol)?.isSuspend == true) {
|
||||
builder.addParameter(
|
||||
FirLightSuspendContinuationParameter(
|
||||
SymbolLightSuspendContinuationParameter(
|
||||
functionSymbol = functionSymbol,
|
||||
containingMethod = this@FirLightMethodForSymbol
|
||||
containingMethod = this@SymbolLightMethod
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -62,7 +62,7 @@ internal abstract class FirLightMethodForSymbol(
|
||||
}
|
||||
|
||||
private val _identifier: PsiIdentifier by lazyPub {
|
||||
FirLightIdentifier(this, functionSymbol)
|
||||
SymbolLightIdentifier(this, functionSymbol)
|
||||
}
|
||||
|
||||
override fun getNameIdentifier(): PsiIdentifier = _identifier
|
||||
+5
-5
@@ -25,19 +25,19 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
import org.jetbrains.kotlin.asJava.mangleInternalName
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.light.classes.symbol.FirLightMemberImpl
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolLightMemberBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.getJvmNameFromAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasPublishedApiAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.FirLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.tryGetEffectiveVisibility
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal abstract class FirLightMethod(
|
||||
internal abstract class SymbolLightMethodBase(
|
||||
lightMemberOrigin: LightMemberOrigin?,
|
||||
containingClass: KtLightClass,
|
||||
private val methodIndex: Int
|
||||
) : FirLightMemberImpl<PsiMethod>(lightMemberOrigin, containingClass), KtLightMethod {
|
||||
) : SymbolLightMemberBase<PsiMethod>(lightMemberOrigin, containingClass), KtLightMethod {
|
||||
|
||||
override fun getBody(): PsiCodeBlock? = null
|
||||
|
||||
@@ -92,7 +92,7 @@ internal abstract class FirLightMethod(
|
||||
|
||||
protected fun <T> T.computeJvmMethodName(
|
||||
defaultName: String,
|
||||
containingClass: FirLightClassBase,
|
||||
containingClass: SymbolLightClassBase,
|
||||
annotationUseSiteTarget: AnnotationUseSiteTarget? = null
|
||||
): String where T : KtAnnotatedSymbol, T : KtSymbolWithVisibility, T : KtCallableSymbol {
|
||||
getJvmNameFromAnnotation(annotationUseSiteTarget)?.let { return it }
|
||||
+11
-11
@@ -9,18 +9,18 @@ import com.intellij.psi.*
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.light.classes.symbol.FirLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.FirLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.FirLightParameterList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightParameterList
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightNoArgConstructor(
|
||||
internal class SymbolLightNoArgConstructor(
|
||||
lightMemberOrigin: LightMemberOrigin?,
|
||||
containingClass: FirLightClassBase,
|
||||
containingClass: SymbolLightClassBase,
|
||||
visibility: String,
|
||||
methodIndex: Int,
|
||||
) : FirLightMethod(lightMemberOrigin, containingClass, methodIndex) {
|
||||
) : SymbolLightMethodBase(lightMemberOrigin, containingClass, methodIndex) {
|
||||
private val _name: String? = containingClass.name
|
||||
|
||||
override fun getName(): String = _name ?: ""
|
||||
@@ -32,7 +32,7 @@ internal class FirLightNoArgConstructor(
|
||||
override fun getTypeParameters(): Array<PsiTypeParameter> = PsiTypeParameter.EMPTY_ARRAY
|
||||
|
||||
private val _identifier: PsiIdentifier by lazyPub {
|
||||
FirLightIdentifier(this, firSymbol = null)
|
||||
SymbolLightIdentifier(this, ktSymbol = null)
|
||||
}
|
||||
|
||||
override fun getNameIdentifier(): PsiIdentifier = _identifier
|
||||
@@ -44,13 +44,13 @@ internal class FirLightNoArgConstructor(
|
||||
}
|
||||
|
||||
private val _modifierList: PsiModifierList by lazyPub {
|
||||
FirLightMemberModifierList(this, _modifiers, emptyList())
|
||||
SymbolLightMemberModifierList(this, _modifiers, emptyList())
|
||||
}
|
||||
|
||||
override fun getModifierList(): PsiModifierList = _modifierList
|
||||
|
||||
private val _parameterList: PsiParameterList by lazyPub {
|
||||
FirLightParameterList(this, callableSymbol = null) {}
|
||||
SymbolLightParameterList(this, callableSymbol = null) {}
|
||||
}
|
||||
|
||||
override fun getParameterList(): PsiParameterList = _parameterList
|
||||
@@ -59,7 +59,7 @@ internal class FirLightNoArgConstructor(
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightNoArgConstructor &&
|
||||
(other is SymbolLightNoArgConstructor &&
|
||||
kotlinOrigin == other.kotlinOrigin &&
|
||||
containingClass == other.containingClass)
|
||||
|
||||
+10
-9
@@ -15,23 +15,24 @@ import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.light.classes.symbol.*
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.*
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.FirLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.classes.SymbolLightClassBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.SymbolLightTypeParameterList
|
||||
import org.jetbrains.kotlin.name.JvmNames.STRICTFP_ANNOTATION_CLASS_ID
|
||||
import org.jetbrains.kotlin.name.JvmNames.SYNCHRONIZED_ANNOTATION_CLASS_ID
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
|
||||
import java.util.*
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightSimpleMethodForSymbol(
|
||||
internal class SymbolLightSimpleMethod(
|
||||
private val functionSymbol: KtFunctionSymbol,
|
||||
lightMemberOrigin: LightMemberOrigin?,
|
||||
containingClass: FirLightClassBase,
|
||||
containingClass: SymbolLightClassBase,
|
||||
methodIndex: Int,
|
||||
private val isTopLevel: Boolean,
|
||||
argumentsSkipMask: BitSet? = null,
|
||||
private val suppressStatic: Boolean = false
|
||||
) : FirLightMethodForSymbol(
|
||||
) : SymbolLightMethod(
|
||||
functionSymbol = functionSymbol,
|
||||
lightMemberOrigin = lightMemberOrigin,
|
||||
containingClass = containingClass,
|
||||
@@ -47,7 +48,7 @@ internal class FirLightSimpleMethodForSymbol(
|
||||
|
||||
private val _typeParameterList: PsiTypeParameterList? by lazyPub {
|
||||
hasTypeParameters().ifTrue {
|
||||
FirLightTypeParameterListForSymbol(
|
||||
SymbolLightTypeParameterList(
|
||||
owner = this,
|
||||
symbolWithTypeParameterList = functionSymbol,
|
||||
)
|
||||
@@ -131,7 +132,7 @@ internal class FirLightSimpleMethodForSymbol(
|
||||
private val _modifierList: PsiModifierList by lazyPub {
|
||||
val modifiers = computeModifiers()
|
||||
val annotations = computeAnnotations(modifiers.contains(PsiModifier.PRIVATE))
|
||||
FirLightMemberModifierList(this, modifiers, annotations)
|
||||
SymbolLightMemberModifierList(this, modifiers, annotations)
|
||||
}
|
||||
|
||||
override fun getModifierList(): PsiModifierList = _modifierList
|
||||
@@ -155,7 +156,7 @@ internal class FirLightSimpleMethodForSymbol(
|
||||
functionSymbol.returnType
|
||||
}
|
||||
ktType.asPsiType(
|
||||
this@FirLightSimpleMethodForSymbol,
|
||||
this@SymbolLightSimpleMethod,
|
||||
KtTypeMappingMode.RETURN_TYPE,
|
||||
containingClass.isAnnotationType
|
||||
) ?: nonExistentType()
|
||||
@@ -164,7 +165,7 @@ internal class FirLightSimpleMethodForSymbol(
|
||||
override fun getReturnType(): PsiType = _returnedType
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other || (other is FirLightSimpleMethodForSymbol && functionSymbol == other.functionSymbol)
|
||||
this === other || (other is SymbolLightSimpleMethod && functionSymbol == other.functionSymbol)
|
||||
|
||||
override fun hashCode(): Int = functionSymbol.hashCode()
|
||||
|
||||
+2
-2
@@ -13,11 +13,11 @@ import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.invalidAccess
|
||||
import org.jetbrains.kotlin.psi.KtModifierListOwner
|
||||
|
||||
internal class FirLightClassModifierList<T : KtLightElement<KtModifierListOwner, PsiModifierListOwner>>(
|
||||
internal class SymbolLightClassModifierList<T : KtLightElement<KtModifierListOwner, PsiModifierListOwner>>(
|
||||
containingDeclaration: T,
|
||||
private val modifiers: Set<String>,
|
||||
private val annotations: List<PsiAnnotation>
|
||||
) : FirLightModifierList<T>(containingDeclaration) {
|
||||
) : SymbolLightModifierList<T>(containingDeclaration) {
|
||||
init {
|
||||
annotations.forEach {
|
||||
(it as? KtLightElementBase)?.parent = this
|
||||
+4
-4
@@ -11,14 +11,14 @@ import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightMember
|
||||
import org.jetbrains.kotlin.light.classes.symbol.invalidAccess
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.FirLightMethod
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||
import org.jetbrains.kotlin.psi.psiUtil.hasBody
|
||||
|
||||
internal class FirLightMemberModifierList<T : KtLightMember<*>>(
|
||||
internal class SymbolLightMemberModifierList<T : KtLightMember<*>>(
|
||||
containingDeclaration: T,
|
||||
private val modifiers: Set<String>,
|
||||
private val annotations: List<PsiAnnotation>
|
||||
) : FirLightModifierList<T>(containingDeclaration) {
|
||||
) : SymbolLightModifierList<T>(containingDeclaration) {
|
||||
init {
|
||||
annotations.forEach {
|
||||
(it as? KtLightElementBase)?.parent = this
|
||||
@@ -38,7 +38,7 @@ internal class FirLightMemberModifierList<T : KtLightMember<*>>(
|
||||
}
|
||||
|
||||
private fun isImplementationInInterface(): Boolean {
|
||||
return owner.containingClass.isInterface && owner is FirLightMethod && owner.kotlinOrigin?.hasBody() == true
|
||||
return owner.containingClass.isInterface && owner is SymbolLightMethodBase && owner.kotlinOrigin?.hasBody() == true
|
||||
}
|
||||
|
||||
override fun hasExplicitModifier(name: String): Boolean {
|
||||
+2
-2
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
||||
import org.jetbrains.kotlin.psi.KtModifierList
|
||||
import org.jetbrains.kotlin.psi.KtModifierListOwner
|
||||
|
||||
internal abstract class FirLightModifierList<out T : KtLightElement<KtModifierListOwner, PsiModifierListOwner>>(
|
||||
internal abstract class SymbolLightModifierList<out T : KtLightElement<KtModifierListOwner, PsiModifierListOwner>>(
|
||||
protected val owner: T
|
||||
) : KtLightElementBase(owner), PsiModifierList, KtLightElement<KtModifierList, PsiModifierListOwner> {
|
||||
|
||||
@@ -37,7 +37,7 @@ internal abstract class FirLightModifierList<out T : KtLightElement<KtModifierLi
|
||||
override fun findAnnotation(qualifiedName: String): PsiAnnotation? = null //TODO()
|
||||
|
||||
override fun isEquivalentTo(another: PsiElement?) =
|
||||
another is FirLightModifierList<*> && owner == another.owner
|
||||
another is SymbolLightModifierList<*> && owner == another.owner
|
||||
|
||||
override fun isWritable() = false
|
||||
|
||||
+7
-7
@@ -14,15 +14,15 @@ import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.light.classes.symbol.NullabilityType
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.FirLightMethod
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightParameterForSymbol(
|
||||
internal class SymbolLightParameter(
|
||||
private val parameterSymbol: KtValueParameterSymbol,
|
||||
containingMethod: FirLightMethod
|
||||
) : FirLightParameterBaseForSymbol(parameterSymbol, containingMethod) {
|
||||
containingMethod: SymbolLightMethodBase
|
||||
) : SymbolLightParameterCommon(parameterSymbol, containingMethod) {
|
||||
|
||||
private val isConstructorParameterSymbol = containingMethod.isConstructor
|
||||
|
||||
@@ -44,14 +44,14 @@ internal class FirLightParameterForSymbol(
|
||||
|
||||
override fun getModifierList(): PsiModifierList = _modifierList
|
||||
private val _modifierList: PsiModifierList by lazyPub {
|
||||
FirLightClassModifierList(this, emptySet(), _annotations)
|
||||
SymbolLightClassModifierList(this, emptySet(), _annotations)
|
||||
}
|
||||
|
||||
override fun isVarArgs() = parameterSymbol.isVararg
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightParameterForSymbol && parameterSymbol == other.parameterSymbol)
|
||||
(other is SymbolLightParameter && parameterSymbol == other.parameterSymbol)
|
||||
|
||||
override fun hashCode(): Int = kotlinOrigin.hashCode()
|
||||
|
||||
+3
-3
@@ -13,10 +13,10 @@ import com.intellij.util.IncorrectOperationException
|
||||
import org.jetbrains.kotlin.asJava.elements.*
|
||||
import org.jetbrains.kotlin.light.classes.symbol.basicIsEquivalentTo
|
||||
import org.jetbrains.kotlin.light.classes.symbol.invalidAccess
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.FirLightMethod
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||
import org.jetbrains.kotlin.psi.KtParameter
|
||||
|
||||
internal abstract class FirLightParameter(containingDeclaration: FirLightMethod) : PsiVariable, NavigationItem,
|
||||
internal abstract class SymbolLightParameterBase(containingDeclaration: SymbolLightMethodBase) : PsiVariable, NavigationItem,
|
||||
KtLightElement<KtParameter, PsiParameter>, KtLightParameter, KtLightElementBase(containingDeclaration) {
|
||||
|
||||
override val givenAnnotations: List<KtLightAbstractAnnotation>
|
||||
@@ -49,7 +49,7 @@ internal abstract class FirLightParameter(containingDeclaration: FirLightMethod)
|
||||
}
|
||||
}
|
||||
|
||||
override fun toString(): String = "Fir Light Parameter $name"
|
||||
override fun toString(): String = "${this::class.simpleName}:$name"
|
||||
|
||||
override fun isEquivalentTo(another: PsiElement?): Boolean =
|
||||
basicIsEquivalentTo(this, another as? PsiParameter)
|
||||
+7
-7
@@ -10,18 +10,18 @@ import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.KtValueParameterSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtTypeMappingMode
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.light.classes.symbol.FirLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.NullabilityType
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.getTypeNullability
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.FirLightMethod
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.nonExistentType
|
||||
import org.jetbrains.kotlin.psi.KtParameter
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal abstract class FirLightParameterBaseForSymbol(
|
||||
internal abstract class SymbolLightParameterCommon(
|
||||
private val parameterSymbol: KtValueParameterSymbol,
|
||||
private val containingMethod: FirLightMethod
|
||||
) : FirLightParameter(containingMethod) {
|
||||
private val containingMethod: SymbolLightMethodBase
|
||||
) : SymbolLightParameterBase(containingMethod) {
|
||||
private val _name: String = parameterSymbol.name.asString()
|
||||
override fun getName(): String = _name
|
||||
|
||||
@@ -33,7 +33,7 @@ internal abstract class FirLightParameterBaseForSymbol(
|
||||
abstract override fun getModifierList(): PsiModifierList
|
||||
|
||||
private val _identifier: PsiIdentifier by lazyPub {
|
||||
FirLightIdentifier(this, parameterSymbol)
|
||||
SymbolLightIdentifier(this, parameterSymbol)
|
||||
}
|
||||
|
||||
protected val nullabilityType: NullabilityType
|
||||
@@ -56,7 +56,7 @@ internal abstract class FirLightParameterBaseForSymbol(
|
||||
// TODO: methods with declaration site wildcards?
|
||||
else -> KtTypeMappingMode.VALUE_PARAMETER
|
||||
}
|
||||
ktType.asPsiType(this@FirLightParameterBaseForSymbol, typeMappingMode)
|
||||
ktType.asPsiType(this@SymbolLightParameterCommon, typeMappingMode)
|
||||
} ?: nonExistentType()
|
||||
if (parameterSymbol.isVararg) {
|
||||
PsiEllipsisType(convertedType, convertedType.annotationProvider)
|
||||
+13
-13
@@ -18,32 +18,32 @@ import org.jetbrains.kotlin.analysis.api.symbols.markers.KtNamedSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.codegen.AsmUtil
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.FirLightAnnotationForAnnotationCall
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.FirLightMethod
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolLightAnnotationForAnnotationCall
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.nonExistentType
|
||||
import org.jetbrains.kotlin.psi.KtParameter
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightParameterForReceiver private constructor(
|
||||
internal class SymbolLightParameterForReceiver private constructor(
|
||||
private val receiverType: KtType,
|
||||
private val context: KtSymbol,
|
||||
methodName: String,
|
||||
method: FirLightMethod
|
||||
) : FirLightParameter(method) {
|
||||
method: SymbolLightMethodBase
|
||||
) : SymbolLightParameterBase(method) {
|
||||
|
||||
companion object {
|
||||
context (KtAnalysisSession)
|
||||
fun tryGet(
|
||||
callableSymbol: KtCallableSymbol,
|
||||
method: FirLightMethod
|
||||
): FirLightParameterForReceiver? {
|
||||
method: SymbolLightMethodBase
|
||||
): SymbolLightParameterForReceiver? {
|
||||
if (callableSymbol !is KtNamedSymbol) return null
|
||||
|
||||
if (!callableSymbol.isExtension) return null
|
||||
val extensionTypeAndAnnotations = callableSymbol.receiverType ?: return null
|
||||
|
||||
return FirLightParameterForReceiver(
|
||||
return SymbolLightParameterForReceiver(
|
||||
receiverType = extensionTypeAndAnnotations,
|
||||
context = callableSymbol,
|
||||
methodName = callableSymbol.name.asString(),
|
||||
@@ -67,24 +67,24 @@ internal class FirLightParameterForReceiver private constructor(
|
||||
|
||||
private val _annotations: List<PsiAnnotation> by lazyPub {
|
||||
receiverType.annotations.map {
|
||||
FirLightAnnotationForAnnotationCall(it, this)
|
||||
SymbolLightAnnotationForAnnotationCall(it, this)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getModifierList(): PsiModifierList = _modifierList
|
||||
private val _modifierList: PsiModifierList by lazyPub {
|
||||
FirLightClassModifierList(this, emptySet(), _annotations)
|
||||
SymbolLightClassModifierList(this, emptySet(), _annotations)
|
||||
}
|
||||
|
||||
private val _type: PsiType by lazyPub {
|
||||
receiverType.asPsiType(this@FirLightParameterForReceiver) ?: nonExistentType()
|
||||
receiverType.asPsiType(this@SymbolLightParameterForReceiver) ?: nonExistentType()
|
||||
}
|
||||
|
||||
override fun getType(): PsiType = _type
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightParameterForReceiver &&
|
||||
(other is SymbolLightParameterForReceiver &&
|
||||
receiverType == other.receiverType)
|
||||
|
||||
override fun hashCode(): Int = kotlinOrigin.hashCode()
|
||||
+5
-5
@@ -13,17 +13,17 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightElement
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightElementBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.FirLightMethod
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||
import org.jetbrains.kotlin.psi.KtFunction
|
||||
import org.jetbrains.kotlin.psi.KtParameterList
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightParameterList(
|
||||
private val parent: FirLightMethod,
|
||||
internal class SymbolLightParameterList(
|
||||
private val parent: SymbolLightMethodBase,
|
||||
private val callableSymbol: KtCallableSymbol?,
|
||||
parameterPopulator: (LightParameterListBuilder) -> Unit,
|
||||
) : KtLightElement<KtParameterList, PsiParameterList>,
|
||||
// With this, a parent chain is properly built: from FirLightParameter through FirLightParameterList to FirLightMethod
|
||||
// With this, a parent chain is properly built: from SymbolLightParameter through SymbolLightParameterList to SymbolLightMethod
|
||||
KtLightElementBase(parent),
|
||||
// NB: we can't use delegation here, which will conflict getTextRange from KtLightElementBase
|
||||
PsiParameterList {
|
||||
@@ -35,7 +35,7 @@ internal class FirLightParameterList(
|
||||
val builder = LightParameterListBuilder(manager, language)
|
||||
|
||||
callableSymbol?.let {
|
||||
FirLightParameterForReceiver.tryGet(it, parent)?.let { receiver ->
|
||||
SymbolLightParameterForReceiver.tryGet(it, parent)?.let { receiver ->
|
||||
builder.addParameter(receiver)
|
||||
}
|
||||
}
|
||||
+7
-7
@@ -15,15 +15,15 @@ import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.light.classes.symbol.NullabilityType
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.computeAnnotations
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.FirLightMethod
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightSetterParameterForSymbol(
|
||||
internal class SymbolLightSetterParameter(
|
||||
private val containingPropertySymbol: KtPropertySymbol,
|
||||
private val parameterSymbol: KtValueParameterSymbol,
|
||||
containingMethod: FirLightMethod
|
||||
) : FirLightParameterBaseForSymbol(parameterSymbol, containingMethod) {
|
||||
containingMethod: SymbolLightMethodBase
|
||||
) : SymbolLightParameterCommon(parameterSymbol, containingMethod) {
|
||||
|
||||
private val _annotations: List<PsiAnnotation> by lazyPub {
|
||||
val annotationsFromSetter = parameterSymbol.computeAnnotations(
|
||||
@@ -44,14 +44,14 @@ internal class FirLightSetterParameterForSymbol(
|
||||
|
||||
override fun getModifierList(): PsiModifierList = _modifierList
|
||||
private val _modifierList: PsiModifierList by lazyPub {
|
||||
FirLightClassModifierList(this, emptySet(), _annotations)
|
||||
SymbolLightClassModifierList(this, emptySet(), _annotations)
|
||||
}
|
||||
|
||||
override fun isVarArgs() = false
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightSetterParameterForSymbol && parameterSymbol == other.parameterSymbol)
|
||||
(other is SymbolLightSetterParameter && parameterSymbol == other.parameterSymbol)
|
||||
|
||||
override fun hashCode(): Int = kotlinOrigin.hashCode()
|
||||
|
||||
+11
-11
@@ -16,25 +16,25 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.isPrivateOrPrivateToThis
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.codegen.coroutines.SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME
|
||||
import org.jetbrains.kotlin.light.classes.symbol.FirLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.FirLightSimpleAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.FirLightMethod
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.SymbolLightIdentifier
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolLightSimpleAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.methods.SymbolLightMethodBase
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.nonExistentType
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.psi.KtParameter
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightSuspendContinuationParameter(
|
||||
internal class SymbolLightSuspendContinuationParameter(
|
||||
private val functionSymbol: KtFunctionSymbol,
|
||||
private val containingMethod: FirLightMethod,
|
||||
) : FirLightParameter(containingMethod) {
|
||||
private val containingMethod: SymbolLightMethodBase,
|
||||
) : SymbolLightParameterBase(containingMethod) {
|
||||
override fun getName(): String = SUSPEND_FUNCTION_COMPLETION_PARAMETER_NAME
|
||||
|
||||
override fun getNameIdentifier(): PsiIdentifier = _identifier
|
||||
|
||||
private val _identifier: PsiIdentifier by lazyPub {
|
||||
FirLightIdentifier(this, functionSymbol)
|
||||
SymbolLightIdentifier(this, functionSymbol)
|
||||
}
|
||||
|
||||
override fun getType(): PsiType = _type
|
||||
@@ -53,9 +53,9 @@ internal class FirLightSuspendContinuationParameter(
|
||||
val annotations =
|
||||
if (functionSymbol.visibility.isPrivateOrPrivateToThis()) emptyList() else
|
||||
listOf(
|
||||
FirLightSimpleAnnotation(NotNull::class.java.name, this@FirLightSuspendContinuationParameter)
|
||||
SymbolLightSimpleAnnotation(NotNull::class.java.name, this@SymbolLightSuspendContinuationParameter)
|
||||
)
|
||||
FirLightClassModifierList(this, emptySet(), annotations)
|
||||
SymbolLightClassModifierList(this, emptySet(), annotations)
|
||||
}
|
||||
|
||||
override fun hasModifierProperty(p0: String): Boolean = false
|
||||
@@ -64,7 +64,7 @@ internal class FirLightSuspendContinuationParameter(
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightSuspendContinuationParameter && functionSymbol == other.functionSymbol)
|
||||
(other is SymbolLightSuspendContinuationParameter && functionSymbol == other.functionSymbol)
|
||||
|
||||
override fun hashCode(): Int = functionSymbol.hashCode() * 31 + containingMethod.hashCode()
|
||||
|
||||
+6
-7
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightDeclaration
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.light.classes.symbol.FirLightTypeParameterListForSymbol
|
||||
import org.jetbrains.kotlin.light.classes.symbol.basicIsEquivalentTo
|
||||
import org.jetbrains.kotlin.light.classes.symbol.invalidAccess
|
||||
import org.jetbrains.kotlin.light.classes.symbol.mapSuperType
|
||||
@@ -33,8 +32,8 @@ import org.jetbrains.kotlin.psi.KtTypeParameter
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightTypeParameter(
|
||||
private val parent: FirLightTypeParameterListForSymbol,
|
||||
internal class SymbolLightTypeParameter(
|
||||
private val parent: SymbolLightTypeParameterList,
|
||||
private val index: Int,
|
||||
private val typeParameterSymbol: KtTypeParameterSymbol
|
||||
) : LightElement(parent.manager, KotlinLanguage.INSTANCE), PsiTypeParameter,
|
||||
@@ -45,7 +44,7 @@ internal class FirLightTypeParameter(
|
||||
override val kotlinOrigin: KtTypeParameter? = typeParameterSymbol.psi as? KtTypeParameter
|
||||
|
||||
override fun copy(): PsiElement =
|
||||
FirLightTypeParameter(parent, index, typeParameterSymbol)
|
||||
SymbolLightTypeParameter(parent, index, typeParameterSymbol)
|
||||
|
||||
override fun accept(visitor: PsiElementVisitor) {
|
||||
if (visitor is JavaElementVisitor) {
|
||||
@@ -72,7 +71,7 @@ internal class FirLightTypeParameter(
|
||||
}
|
||||
}
|
||||
.mapNotNull {
|
||||
mapSuperType(it, this@FirLightTypeParameter, kotlinCollectionAsIs = true)
|
||||
mapSuperType(it, this@SymbolLightTypeParameter, kotlinCollectionAsIs = true)
|
||||
}
|
||||
.forEach { listBuilder.addReference(it) }
|
||||
|
||||
@@ -142,7 +141,7 @@ internal class FirLightTypeParameter(
|
||||
override fun getIndex(): Int = index
|
||||
override fun getApplicableAnnotations(): Array<PsiAnnotation> = PsiAnnotation.EMPTY_ARRAY //TODO
|
||||
|
||||
override fun toString(): String = "FirLightTypeParameter:$name"
|
||||
override fun toString(): String = "SymbolLightTypeParameter:$name"
|
||||
|
||||
override fun getNavigationElement(): PsiElement =
|
||||
kotlinOrigin ?: parent.navigationElement
|
||||
@@ -154,7 +153,7 @@ internal class FirLightTypeParameter(
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightTypeParameter && index == other.index && typeParameterSymbol == other.typeParameterSymbol)
|
||||
(other is SymbolLightTypeParameter && index == other.index && typeParameterSymbol == other.typeParameterSymbol)
|
||||
|
||||
override fun hashCode(): Int = typeParameterSymbol.hashCode() + index
|
||||
|
||||
+7
-7
@@ -3,7 +3,7 @@
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.light.classes.symbol
|
||||
package org.jetbrains.kotlin.light.classes.symbol.parameters
|
||||
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.impl.light.LightElement
|
||||
@@ -12,10 +12,10 @@ import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithTypeParameters
|
||||
import org.jetbrains.kotlin.asJava.classes.lazyPub
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.light.classes.symbol.parameters.FirLightTypeParameter
|
||||
import org.jetbrains.kotlin.light.classes.symbol.basicIsEquivalentTo
|
||||
|
||||
context(KtAnalysisSession)
|
||||
internal class FirLightTypeParameterListForSymbol(
|
||||
internal class SymbolLightTypeParameterList(
|
||||
internal val owner: PsiTypeParameterListOwner,
|
||||
private val symbolWithTypeParameterList: KtSymbolWithTypeParameters,
|
||||
) : LightElement(owner.manager, KotlinLanguage.INSTANCE), PsiTypeParameterList {
|
||||
@@ -39,8 +39,8 @@ internal class FirLightTypeParameterListForSymbol(
|
||||
|
||||
private val _typeParameters: Array<PsiTypeParameter> by lazyPub {
|
||||
symbolWithTypeParameterList.typeParameters.mapIndexed { index, parameter ->
|
||||
FirLightTypeParameter(
|
||||
parent = this@FirLightTypeParameterListForSymbol,
|
||||
SymbolLightTypeParameter(
|
||||
parent = this@SymbolLightTypeParameterList,
|
||||
index = index,
|
||||
typeParameterSymbol = parameter
|
||||
)
|
||||
@@ -52,11 +52,11 @@ internal class FirLightTypeParameterListForSymbol(
|
||||
override fun getTypeParameterIndex(typeParameter: PsiTypeParameter?): Int =
|
||||
_typeParameters.indexOf(typeParameter)
|
||||
|
||||
override fun toString(): String = "FirLightTypeParameterList"
|
||||
override fun toString(): String = "SymbolLightTypeParameterList"
|
||||
|
||||
override fun equals(other: Any?): Boolean =
|
||||
this === other ||
|
||||
(other is FirLightTypeParameterListForSymbol && symbolWithTypeParameterList == other.symbolWithTypeParameterList)
|
||||
(other is SymbolLightTypeParameterList && symbolWithTypeParameterList == other.symbolWithTypeParameterList)
|
||||
|
||||
override fun hashCode(): Int = symbolWithTypeParameterList.hashCode()
|
||||
|
||||
+10
-10
@@ -25,16 +25,16 @@ import org.jetbrains.kotlin.asJava.elements.psiType
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.FirLightSimpleAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.FirPsiArrayInitializerMemberValue
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.FirPsiExpression
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.FirPsiLiteral
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolLightSimpleAnnotation
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolPsiArrayInitializerMemberValue
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolPsiExpression
|
||||
import org.jetbrains.kotlin.light.classes.symbol.annotations.SymbolPsiLiteral
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import java.util.*
|
||||
|
||||
internal fun <L : Any> L.invalidAccess(): Nothing =
|
||||
error("Cls delegate shouldn't be accessed for fir light classes! Qualified name: ${javaClass.name}")
|
||||
error("Cls delegate shouldn't be accessed for symbol light classes! Qualified name: ${javaClass.name}")
|
||||
|
||||
|
||||
internal fun KtAnalysisSession.mapSuperType(
|
||||
@@ -200,12 +200,12 @@ private fun escapeString(str: String): String = buildString {
|
||||
internal fun KtAnnotationValue.toAnnotationMemberValue(parent: PsiElement): PsiAnnotationMemberValue? {
|
||||
return when (this) {
|
||||
is KtArrayAnnotationValue ->
|
||||
FirPsiArrayInitializerMemberValue(sourcePsi, parent) { arrayLiteralParent ->
|
||||
SymbolPsiArrayInitializerMemberValue(sourcePsi, parent) { arrayLiteralParent ->
|
||||
values.mapNotNull { element -> element.toAnnotationMemberValue(arrayLiteralParent) }
|
||||
}
|
||||
|
||||
is KtAnnotationApplicationValue ->
|
||||
FirLightSimpleAnnotation(
|
||||
SymbolLightSimpleAnnotation(
|
||||
annotationValue.classId?.relativeClassName?.asString(),
|
||||
parent,
|
||||
annotationValue.arguments,
|
||||
@@ -215,8 +215,8 @@ internal fun KtAnnotationValue.toAnnotationMemberValue(parent: PsiElement): PsiA
|
||||
is KtConstantAnnotationValue -> {
|
||||
this.constantValue.createPsiLiteral(parent)?.let {
|
||||
when (it) {
|
||||
is PsiLiteral -> FirPsiLiteral(sourcePsi, parent, it)
|
||||
else -> FirPsiExpression(sourcePsi, parent, it)
|
||||
is PsiLiteral -> SymbolPsiLiteral(sourcePsi, parent, it)
|
||||
else -> SymbolPsiExpression(sourcePsi, parent, it)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -224,7 +224,7 @@ internal fun KtAnnotationValue.toAnnotationMemberValue(parent: PsiElement): PsiA
|
||||
is KtEnumEntryAnnotationValue -> {
|
||||
val fqName = this.callableId?.asSingleFqName()?.asString() ?: return null
|
||||
val psiExpression = PsiElementFactory.getInstance(parent.project).createExpressionFromText(fqName, parent)
|
||||
FirPsiExpression(sourcePsi, parent, psiExpression)
|
||||
SymbolPsiExpression(sourcePsi, parent, psiExpression)
|
||||
}
|
||||
|
||||
KtUnsupportedAnnotationValue -> null
|
||||
+4
-4
@@ -10,8 +10,8 @@ import com.intellij.psi.*
|
||||
import junit.framework.TestCase
|
||||
import org.jetbrains.kotlin.analysis.test.framework.test.configurators.AnalysisApiTestConfigurator
|
||||
import org.jetbrains.kotlin.asJava.LightClassTestCommon
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.FirLightMemberModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
|
||||
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightMemberModifierList
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.test.model.TestModule
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
@@ -106,11 +106,11 @@ abstract class AbstractSymbolLightClassesAnnotationOwnerTest(
|
||||
when (lastDeclaration) {
|
||||
is PsiClass,
|
||||
is PsiParameter ->
|
||||
TestCase.assertTrue(owner is FirLightClassModifierList<*>)
|
||||
TestCase.assertTrue(owner is SymbolLightClassModifierList<*>)
|
||||
|
||||
is PsiField,
|
||||
is PsiMethod ->
|
||||
TestCase.assertTrue(owner is FirLightMemberModifierList<*>)
|
||||
TestCase.assertTrue(owner is SymbolLightMemberModifierList<*>)
|
||||
|
||||
else ->
|
||||
throw IllegalStateException("Unexpected annotation owner kind: ${lastDeclaration::class.java}")
|
||||
|
||||
Reference in New Issue
Block a user