[FIR] Fix all illegal usages of declarationSiteSession in compiler
There are still some usages in IDE which should be investigated
This commit is contained in:
committed by
TeamCityServer
parent
f98f41bbc3
commit
234ab3b35d
@@ -63,12 +63,12 @@ class JavaScopeProvider(
|
||||
}
|
||||
}
|
||||
|
||||
private fun buildDeclaredMemberScope(regularClass: FirRegularClass): FirScope {
|
||||
return if (regularClass is FirJavaClass) declaredMemberScopeWithLazyNestedScope(
|
||||
private fun buildDeclaredMemberScope(useSiteSession: FirSession, regularClass: FirRegularClass): FirScope {
|
||||
return if (regularClass is FirJavaClass) useSiteSession.declaredMemberScopeWithLazyNestedScope(
|
||||
regularClass,
|
||||
existingNames = regularClass.existingNestedClassifierNames,
|
||||
symbolProvider = symbolProvider
|
||||
) else declaredMemberScope(regularClass)
|
||||
) else useSiteSession.declaredMemberScope(regularClass)
|
||||
}
|
||||
|
||||
private fun buildUseSiteMemberScopeWithJavaTypes(
|
||||
@@ -77,7 +77,7 @@ class JavaScopeProvider(
|
||||
scopeSession: ScopeSession,
|
||||
): JavaClassUseSiteMemberScope {
|
||||
return scopeSession.getOrBuild(regularClass.symbol, JAVA_USE_SITE) {
|
||||
val declaredScope = buildDeclaredMemberScope(regularClass)
|
||||
val declaredScope = buildDeclaredMemberScope(useSiteSession, regularClass)
|
||||
val superTypes =
|
||||
if (regularClass.isThereLoopInSupertypes(useSiteSession))
|
||||
listOf(StandardClassIds.Any.toConeKotlinType(emptyArray(), isNullable = false))
|
||||
@@ -122,14 +122,14 @@ class JavaScopeProvider(
|
||||
if (!visitedClasses.add(klass)) return null
|
||||
|
||||
return scopeSession.getOrBuild(klass.symbol, JAVA_ENHANCEMENT_FOR_STATIC) {
|
||||
val declaredScope = buildDeclaredMemberScope(klass)
|
||||
val declaredScope = buildDeclaredMemberScope(useSiteSession, klass)
|
||||
|
||||
val superClassScope = klass.findJavaSuperClass()?.let {
|
||||
val superClassScope = klass.findJavaSuperClass(useSiteSession)?.let {
|
||||
(it.scopeProvider as? JavaScopeProvider)
|
||||
?.getStaticMemberScopeForCallables(it, useSiteSession, scopeSession, visitedClasses)
|
||||
} ?: FirTypeScope.Empty
|
||||
|
||||
val superTypesScopes = klass.findClosestJavaSuperTypes().mapNotNull {
|
||||
val superTypesScopes = klass.findClosestJavaSuperTypes(useSiteSession).mapNotNull {
|
||||
(it.scopeProvider as? JavaScopeProvider)
|
||||
?.getStaticMemberScopeForCallables(it, useSiteSession, scopeSession, visitedClasses)
|
||||
}
|
||||
@@ -149,24 +149,24 @@ class JavaScopeProvider(
|
||||
}
|
||||
}
|
||||
|
||||
private tailrec fun FirRegularClass.findJavaSuperClass(): FirRegularClass? {
|
||||
private tailrec fun FirRegularClass.findJavaSuperClass(useSiteSession: FirSession): FirRegularClass? {
|
||||
val superClass = superConeTypes.firstNotNullResult {
|
||||
(it.lookupTag.toSymbol(declarationSiteSession)?.fir as? FirRegularClass)?.takeIf { superClass ->
|
||||
(it.lookupTag.toSymbol(useSiteSession)?.fir as? FirRegularClass)?.takeIf { superClass ->
|
||||
superClass.classKind == ClassKind.CLASS
|
||||
}
|
||||
} ?: return null
|
||||
|
||||
if (superClass.origin is FirDeclarationOrigin.Java) return superClass
|
||||
|
||||
return superClass.findJavaSuperClass()
|
||||
return superClass.findJavaSuperClass(useSiteSession)
|
||||
}
|
||||
|
||||
private fun FirRegularClass.findClosestJavaSuperTypes(): Collection<FirRegularClass> {
|
||||
private fun FirRegularClass.findClosestJavaSuperTypes(useSiteSession: FirSession): Collection<FirRegularClass> {
|
||||
val result = mutableListOf<FirRegularClass>()
|
||||
DFS.dfs(listOf(this),
|
||||
{ regularClass ->
|
||||
regularClass.superConeTypes.mapNotNull {
|
||||
it.lookupTag.toSymbol(declarationSiteSession)?.fir as? FirRegularClass
|
||||
it.lookupTag.toSymbol(useSiteSession)?.fir as? FirRegularClass
|
||||
}
|
||||
},
|
||||
object : DFS.AbstractNodeHandler<FirRegularClass, Unit>() {
|
||||
|
||||
@@ -213,7 +213,7 @@ class JavaSymbolProvider(
|
||||
) {
|
||||
replaceSuperTypeRefs(
|
||||
javaClass.supertypes.map { supertype ->
|
||||
supertype.toFirResolvedTypeRef(declarationSiteSession, javaTypeParameterStack, isForSupertypes = true, forTypeParameterBounds = false)
|
||||
supertype.toFirResolvedTypeRef(session, javaTypeParameterStack, isForSupertypes = true, forTypeParameterBounds = false)
|
||||
}
|
||||
)
|
||||
}
|
||||
@@ -354,7 +354,7 @@ class JavaSymbolProvider(
|
||||
valueParametersForAnnotationConstructor.forEach { javaMethod, firValueParameter ->
|
||||
javaMethod.annotationParameterDefaultValue?.let { javaDefaultValue ->
|
||||
firValueParameter.defaultValue =
|
||||
javaDefaultValue.toFirExpression(declarationSiteSession, javaTypeParameterStack, firValueParameter.returnTypeRef)
|
||||
javaDefaultValue.toFirExpression(session, javaTypeParameterStack, firValueParameter.returnTypeRef)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -402,7 +402,7 @@ private fun JavaClassifierType.toConeKotlinTypeForFlexibleBound(
|
||||
} else {
|
||||
val position = if (isLowerBound) TypeComponentPosition.FLEXIBLE_LOWER else TypeComponentPosition.FLEXIBLE_UPPER
|
||||
|
||||
classSymbol?.fir?.createRawArguments(defaultArgs, position) ?: defaultArgs
|
||||
classSymbol?.fir?.createRawArguments(session, defaultArgs, position) ?: defaultArgs
|
||||
}
|
||||
} else {
|
||||
val typeParameters = runIf(!forTypeParameterBounds && !isForSupertypes) { classSymbol?.fir?.typeParameters } ?: emptyList()
|
||||
@@ -429,13 +429,14 @@ private fun JavaClassifierType.toConeKotlinTypeForFlexibleBound(
|
||||
}
|
||||
|
||||
private fun FirRegularClass.createRawArguments(
|
||||
session: FirSession,
|
||||
defaultArgs: List<ConeStarProjection>,
|
||||
position: TypeComponentPosition
|
||||
) = typeParameters.filterIsInstance<FirTypeParameter>().map { typeParameter ->
|
||||
): List<ConeTypeProjection> = typeParameters.filterIsInstance<FirTypeParameter>().map { typeParameter ->
|
||||
val erasedUpperBound = typeParameter.getErasedUpperBound {
|
||||
defaultType().withArguments(defaultArgs.toTypedArray())
|
||||
}
|
||||
computeRawProjection(declarationSiteSession, typeParameter, position, erasedUpperBound)
|
||||
computeRawProjection(session, typeParameter, position, erasedUpperBound)
|
||||
}
|
||||
|
||||
private fun buildEnumCall(session: FirSession, classId: ClassId?, entryName: Name?) =
|
||||
|
||||
+2
-2
@@ -382,13 +382,13 @@ class JavaClassUseSiteMemberScope(
|
||||
}
|
||||
|
||||
private fun FirFunction<*>.computeJvmSignature(): String? {
|
||||
return computeJvmSignature { it.toConeKotlinTypeProbablyFlexible(declarationSiteSession, typeParameterStack) }
|
||||
return computeJvmSignature { it.toConeKotlinTypeProbablyFlexible(session, typeParameterStack) }
|
||||
}
|
||||
|
||||
private fun FirFunction<*>.computeJvmDescriptor(customName: String? = null, includeReturnType: Boolean = false): String {
|
||||
return computeJvmDescriptor(customName, includeReturnType) {
|
||||
it.toConeKotlinTypeProbablyFlexible(
|
||||
declarationSiteSession,
|
||||
session,
|
||||
typeParameterStack
|
||||
)
|
||||
}
|
||||
|
||||
@@ -134,14 +134,14 @@ class JavaOverrideChecker internal constructor(
|
||||
override fun buildTypeParametersSubstitutorIfCompatible(
|
||||
overrideCandidate: FirCallableMemberDeclaration<*>,
|
||||
baseDeclaration: FirCallableMemberDeclaration<*>
|
||||
): ConeSubstitutor? {
|
||||
): ConeSubstitutor {
|
||||
if (!overrideCandidate.isTypeParameterDependent() && !baseDeclaration.isTypeParameterDependent()) {
|
||||
return ConeSubstitutor.Empty
|
||||
}
|
||||
val typeParameters = linkedSetOf<FirTypeParameterRef>()
|
||||
overrideCandidate.extractTypeParametersTo(typeParameters)
|
||||
baseDeclaration.extractTypeParametersTo(typeParameters)
|
||||
return substitutorByMap(typeParameters.buildErasure())
|
||||
return substitutorByMap(typeParameters.buildErasure(), session)
|
||||
}
|
||||
|
||||
override fun isOverriddenFunction(overrideCandidate: FirSimpleFunction, baseDeclaration: FirSimpleFunction): Boolean {
|
||||
|
||||
Reference in New Issue
Block a user