K2: split JavaTypeParameterStack to mutable/immutable
#KT-62314 Fixed
This commit is contained in:
committed by
Space Team
parent
b43ceab880
commit
3ff16f7798
+2
-2
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.descriptors.java.JavaVisibilities
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.jvmTypeMapper
|
import org.jetbrains.kotlin.fir.backend.jvm.jvmTypeMapper
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
|
import org.jetbrains.kotlin.fir.java.MutableJavaTypeParameterStack
|
||||||
import org.jetbrains.kotlin.fir.java.javaSymbolProvider
|
import org.jetbrains.kotlin.fir.java.javaSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.java.resolveIfJavaType
|
import org.jetbrains.kotlin.fir.java.resolveIfJavaType
|
||||||
import org.jetbrains.kotlin.fir.moduleData
|
import org.jetbrains.kotlin.fir.moduleData
|
||||||
@@ -121,7 +121,7 @@ internal class KtFirPsiTypeProvider(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
val javaTypeParameterStack = JavaTypeParameterStack()
|
val javaTypeParameterStack = MutableJavaTypeParameterStack()
|
||||||
|
|
||||||
var psiClass = PsiTreeUtil.getContextOfType(useSitePosition, PsiClass::class.java, false)
|
var psiClass = PsiTreeUtil.getContextOfType(useSitePosition, PsiClass::class.java, false)
|
||||||
while (psiClass != null && psiClass.name == null) {
|
while (psiClass != null && psiClass.name == null) {
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ abstract class FirJavaFacade(
|
|||||||
}
|
}
|
||||||
private val knownClassNamesInPackage = session.firCachesFactory.createCache(classFinder::knownClassNamesInPackage)
|
private val knownClassNamesInPackage = session.firCachesFactory.createCache(classFinder::knownClassNamesInPackage)
|
||||||
|
|
||||||
private val parentClassTypeParameterStackCache = mutableMapOf<FirRegularClassSymbol, JavaTypeParameterStack>()
|
private val parentClassTypeParameterStackCache = mutableMapOf<FirRegularClassSymbol, MutableJavaTypeParameterStack>()
|
||||||
private val parentClassEffectiveVisibilityCache = mutableMapOf<FirRegularClassSymbol, EffectiveVisibility>()
|
private val parentClassEffectiveVisibilityCache = mutableMapOf<FirRegularClassSymbol, EffectiveVisibility>()
|
||||||
private val statusExtensions = session.extensionService.statusTransformerExtensions
|
private val statusExtensions = session.extensionService.statusTransformerExtensions
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ abstract class FirJavaFacade(
|
|||||||
abstract fun getModuleDataForClass(javaClass: JavaClass): FirModuleData
|
abstract fun getModuleDataForClass(javaClass: JavaClass): FirModuleData
|
||||||
|
|
||||||
private fun JavaTypeParameter.toFirTypeParameter(
|
private fun JavaTypeParameter.toFirTypeParameter(
|
||||||
javaTypeParameterStack: JavaTypeParameterStack,
|
javaTypeParameterStack: MutableJavaTypeParameterStack,
|
||||||
containingDeclarationSymbol: FirBasedSymbol<*>,
|
containingDeclarationSymbol: FirBasedSymbol<*>,
|
||||||
moduleData: FirModuleData,
|
moduleData: FirModuleData,
|
||||||
): FirTypeParameter {
|
): FirTypeParameter {
|
||||||
@@ -131,7 +131,7 @@ abstract class FirJavaFacade(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun List<JavaTypeParameter>.convertTypeParameters(
|
private fun List<JavaTypeParameter>.convertTypeParameters(
|
||||||
stack: JavaTypeParameterStack,
|
stack: MutableJavaTypeParameterStack,
|
||||||
containingDeclarationSymbol: FirBasedSymbol<*>,
|
containingDeclarationSymbol: FirBasedSymbol<*>,
|
||||||
moduleData: FirModuleData,
|
moduleData: FirModuleData,
|
||||||
): List<FirTypeParameter> {
|
): List<FirTypeParameter> {
|
||||||
@@ -154,7 +154,7 @@ abstract class FirJavaFacade(
|
|||||||
javaClass: JavaClass,
|
javaClass: JavaClass,
|
||||||
): FirJavaClass {
|
): FirJavaClass {
|
||||||
val classId = classSymbol.classId
|
val classId = classSymbol.classId
|
||||||
val javaTypeParameterStack = JavaTypeParameterStack()
|
val javaTypeParameterStack = MutableJavaTypeParameterStack()
|
||||||
|
|
||||||
if (parentClassSymbol != null) {
|
if (parentClassSymbol != null) {
|
||||||
val parentStack = parentClassTypeParameterStackCache[parentClassSymbol]
|
val parentStack = parentClassTypeParameterStackCache[parentClassSymbol]
|
||||||
@@ -235,7 +235,7 @@ abstract class FirJavaFacade(
|
|||||||
classSymbol: FirRegularClassSymbol,
|
classSymbol: FirRegularClassSymbol,
|
||||||
parentClassSymbol: FirRegularClassSymbol?,
|
parentClassSymbol: FirRegularClassSymbol?,
|
||||||
classId: ClassId,
|
classId: ClassId,
|
||||||
javaTypeParameterStack: JavaTypeParameterStack,
|
javaTypeParameterStack: MutableJavaTypeParameterStack,
|
||||||
): FirJavaClass {
|
): FirJavaClass {
|
||||||
val valueParametersForAnnotationConstructor = ValueParametersForAnnotationConstructor()
|
val valueParametersForAnnotationConstructor = ValueParametersForAnnotationConstructor()
|
||||||
val classIsAnnotation = javaClass.classKind == ClassKind.ANNOTATION_CLASS
|
val classIsAnnotation = javaClass.classKind == ClassKind.ANNOTATION_CLASS
|
||||||
@@ -497,7 +497,7 @@ abstract class FirJavaFacade(
|
|||||||
private fun convertJavaFieldToFir(
|
private fun convertJavaFieldToFir(
|
||||||
javaField: JavaField,
|
javaField: JavaField,
|
||||||
classId: ClassId,
|
classId: ClassId,
|
||||||
javaTypeParameterStack: JavaTypeParameterStack,
|
javaTypeParameterStack: MutableJavaTypeParameterStack,
|
||||||
dispatchReceiver: ConeClassLikeType,
|
dispatchReceiver: ConeClassLikeType,
|
||||||
moduleData: FirModuleData,
|
moduleData: FirModuleData,
|
||||||
): FirDeclaration {
|
): FirDeclaration {
|
||||||
@@ -565,7 +565,7 @@ abstract class FirJavaFacade(
|
|||||||
containingClass: JavaClass,
|
containingClass: JavaClass,
|
||||||
javaMethod: JavaMethod,
|
javaMethod: JavaMethod,
|
||||||
classId: ClassId,
|
classId: ClassId,
|
||||||
javaTypeParameterStack: JavaTypeParameterStack,
|
javaTypeParameterStack: MutableJavaTypeParameterStack,
|
||||||
dispatchReceiver: ConeClassLikeType,
|
dispatchReceiver: ConeClassLikeType,
|
||||||
moduleData: FirModuleData,
|
moduleData: FirModuleData,
|
||||||
): FirJavaMethod {
|
): FirJavaMethod {
|
||||||
@@ -630,7 +630,7 @@ abstract class FirJavaFacade(
|
|||||||
javaClass: JavaClass,
|
javaClass: JavaClass,
|
||||||
ownerClassBuilder: FirJavaClassBuilder,
|
ownerClassBuilder: FirJavaClassBuilder,
|
||||||
classTypeParameters: List<FirTypeParameter>,
|
classTypeParameters: List<FirTypeParameter>,
|
||||||
javaTypeParameterStack: JavaTypeParameterStack,
|
javaTypeParameterStack: MutableJavaTypeParameterStack,
|
||||||
outerClassSymbol: FirRegularClassSymbol?,
|
outerClassSymbol: FirRegularClassSymbol?,
|
||||||
moduleData: FirModuleData,
|
moduleData: FirModuleData,
|
||||||
): FirJavaConstructor {
|
): FirJavaConstructor {
|
||||||
|
|||||||
+9
-4
@@ -8,18 +8,18 @@ package org.jetbrains.kotlin.fir.java
|
|||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.load.java.structure.JavaTypeParameter
|
import org.jetbrains.kotlin.load.java.structure.JavaTypeParameter
|
||||||
|
|
||||||
class JavaTypeParameterStack : Iterable<Map.Entry<JavaTypeParameter, FirTypeParameterSymbol>> {
|
class MutableJavaTypeParameterStack : JavaTypeParameterStack() {
|
||||||
private val typeParameterMap = mutableMapOf<JavaTypeParameter, FirTypeParameterSymbol>()
|
private val typeParameterMap = mutableMapOf<JavaTypeParameter, FirTypeParameterSymbol>()
|
||||||
|
|
||||||
fun addParameter(javaTypeParameter: JavaTypeParameter, symbol: FirTypeParameterSymbol) {
|
fun addParameter(javaTypeParameter: JavaTypeParameter, symbol: FirTypeParameterSymbol) {
|
||||||
typeParameterMap[javaTypeParameter] = symbol
|
typeParameterMap[javaTypeParameter] = symbol
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addStack(javaTypeParameterStack: JavaTypeParameterStack) {
|
fun addStack(javaTypeParameterStack: MutableJavaTypeParameterStack) {
|
||||||
typeParameterMap += javaTypeParameterStack.typeParameterMap
|
typeParameterMap += javaTypeParameterStack.typeParameterMap
|
||||||
}
|
}
|
||||||
|
|
||||||
operator fun get(javaTypeParameter: JavaTypeParameter): FirTypeParameterSymbol {
|
override operator fun get(javaTypeParameter: JavaTypeParameter): FirTypeParameterSymbol {
|
||||||
return typeParameterMap[javaTypeParameter]
|
return typeParameterMap[javaTypeParameter]
|
||||||
?: throw IllegalArgumentException("Cannot find Java type parameter $javaTypeParameter in stack")
|
?: throw IllegalArgumentException("Cannot find Java type parameter $javaTypeParameter in stack")
|
||||||
}
|
}
|
||||||
@@ -28,7 +28,12 @@ class JavaTypeParameterStack : Iterable<Map.Entry<JavaTypeParameter, FirTypePara
|
|||||||
return typeParameterMap.iterator()
|
return typeParameterMap.iterator()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class JavaTypeParameterStack : Iterable<Map.Entry<JavaTypeParameter, FirTypeParameterSymbol>> {
|
||||||
|
abstract operator fun get(javaTypeParameter: JavaTypeParameter): FirTypeParameterSymbol
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val EMPTY: JavaTypeParameterStack = JavaTypeParameterStack()
|
val EMPTY: JavaTypeParameterStack = MutableJavaTypeParameterStack()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.builder.toMutableOrEmpty
|
|||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.FirRegularClassBuilder
|
import org.jetbrains.kotlin.fir.declarations.builder.FirRegularClassBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||||
import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
|
import org.jetbrains.kotlin.fir.java.MutableJavaTypeParameterStack
|
||||||
import org.jetbrains.kotlin.fir.java.convertAnnotationsToFir
|
import org.jetbrains.kotlin.fir.java.convertAnnotationsToFir
|
||||||
import org.jetbrains.kotlin.fir.java.enhancement.FirSignatureEnhancement
|
import org.jetbrains.kotlin.fir.java.enhancement.FirSignatureEnhancement
|
||||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||||
@@ -49,7 +49,7 @@ class FirJavaClass @FirImplementationDetail internal constructor(
|
|||||||
private val unenhnancedSuperTypes: List<FirTypeRef>,
|
private val unenhnancedSuperTypes: List<FirTypeRef>,
|
||||||
override val typeParameters: MutableList<FirTypeParameterRef>,
|
override val typeParameters: MutableList<FirTypeParameterRef>,
|
||||||
internal val javaPackage: JavaPackage?,
|
internal val javaPackage: JavaPackage?,
|
||||||
val javaTypeParameterStack: JavaTypeParameterStack,
|
val javaTypeParameterStack: MutableJavaTypeParameterStack,
|
||||||
internal val existingNestedClassifierNames: List<Name>,
|
internal val existingNestedClassifierNames: List<Name>,
|
||||||
private val isDeprecatedInJavaDoc: Boolean,
|
private val isDeprecatedInJavaDoc: Boolean,
|
||||||
) : FirRegularClass() {
|
) : FirRegularClass() {
|
||||||
@@ -156,7 +156,7 @@ class FirJavaClassBuilder : FirRegularClassBuilder(), FirAnnotationContainerBuil
|
|||||||
var isTopLevel: Boolean by Delegates.notNull()
|
var isTopLevel: Boolean by Delegates.notNull()
|
||||||
var isStatic: Boolean by Delegates.notNull()
|
var isStatic: Boolean by Delegates.notNull()
|
||||||
var javaPackage: JavaPackage? = null
|
var javaPackage: JavaPackage? = null
|
||||||
lateinit var javaTypeParameterStack: JavaTypeParameterStack
|
lateinit var javaTypeParameterStack: MutableJavaTypeParameterStack
|
||||||
val existingNestedClassifierNames: MutableList<Name> = mutableListOf()
|
val existingNestedClassifierNames: MutableList<Name> = mutableListOf()
|
||||||
var isDeprecatedInJavaDoc: Boolean = false
|
var isDeprecatedInJavaDoc: Boolean = false
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user