K2: use lookupTag instead of classId in use-site scopes

We used this classId to get an associated symbol,
but this way is anyway not recommended (e.g. problems with local classes).
In this commit we migrated to usage of lookup tags instead.
This commit is contained in:
Mikhail Glukhikh
2023-12-20 10:22:17 +01:00
committed by Space Team
parent 79e041a310
commit 2f29738989
4 changed files with 9 additions and 10 deletions
@@ -617,7 +617,7 @@ private class ElementsToShortenCollector(
private fun FirScope.correspondingClassIdIfExists(): ClassId = when (this) {
is FirNestedClassifierScope -> klass.classId
is FirNestedClassifierScopeWithSubstitution -> originalScope.correspondingClassIdIfExists()
is FirClassUseSiteMemberScope -> classId
is FirClassUseSiteMemberScope -> ownerClassLookupTag.classId
else -> errorWithAttachment("FirScope ${this::class}` is expected to be one of FirNestedClassifierScope and FirClassUseSiteMemberScope to get ClassId") {
withEntry("firScope", this@correspondingClassIdIfExists) { it.toString() }
}
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.fir.java.syntheticPropertiesStorage
import org.jetbrains.kotlin.fir.java.symbols.FirJavaOverriddenSyntheticPropertySymbol
import org.jetbrains.kotlin.fir.java.toConeKotlinTypeProbablyFlexible
import org.jetbrains.kotlin.fir.resolve.defaultType
import org.jetbrains.kotlin.fir.resolve.providers.toSymbol
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.scopes.*
import org.jetbrains.kotlin.fir.scopes.impl.AbstractFirUseSiteMemberScope
import org.jetbrains.kotlin.fir.scopes.impl.FirTypeIntersectionScopeContext.ResultOfIntersection
@@ -55,7 +55,7 @@ class JavaClassUseSiteMemberScope(
superTypeScopes: List<FirTypeScope>,
declaredMemberScope: FirContainingNamesAwareScope
) : AbstractFirUseSiteMemberScope(
klass.classId,
klass.symbol.toLookupTag(),
session,
JavaOverrideChecker(session, klass.javaTypeParameterStack, superTypeScopes, considerReturnTypeKinds = true),
superTypeScopes,
@@ -343,7 +343,7 @@ class JavaClassUseSiteMemberScope(
private fun FirNamedFunctionSymbol.createSuspendView(): FirSimpleFunction? {
val continuationParameter = fir.valueParameters.lastOrNull() ?: return null
val owner = classId.toSymbol(session)?.fir as? FirJavaClass ?: return null
val owner = ownerClassLookupTag.toSymbol(session)?.fir as? FirJavaClass ?: return null
val continuationParameterType = continuationParameter
.returnTypeRef
.resolveIfJavaType(session, owner.javaTypeParameterStack)
@@ -824,6 +824,6 @@ class JavaClassUseSiteMemberScope(
}
override fun toString(): String {
return "Java use site scope of $classId"
return "Java use site scope of ${ownerClassLookupTag.classId}"
}
}
@@ -10,13 +10,13 @@ import org.jetbrains.kotlin.fir.declarations.utils.isStatic
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.scopes.*
import org.jetbrains.kotlin.fir.scopes.impl.FirTypeIntersectionScopeContext.ResultOfIntersection
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
abstract class AbstractFirUseSiteMemberScope(
val classId: ClassId,
val ownerClassLookupTag: ConeClassLikeLookupTag,
session: FirSession,
overrideChecker: FirOverrideChecker,
protected val superTypeScopes: List<FirTypeScope>,
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.scopes.impl
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.utils.classId
import org.jetbrains.kotlin.fir.declarations.utils.isStatic
import org.jetbrains.kotlin.fir.resolve.defaultType
import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
@@ -22,7 +21,7 @@ class FirClassUseSiteMemberScope(
superTypeScopes: List<FirTypeScope>,
declaredMemberScope: FirContainingNamesAwareScope
) : AbstractFirUseSiteMemberScope(
klass.classId,
klass.symbol.toLookupTag(),
session,
session.firOverrideChecker,
superTypeScopes,
@@ -92,6 +91,6 @@ class FirClassUseSiteMemberScope(
}
override fun toString(): String {
return "Use site scope of $classId"
return "Use site scope of ${ownerClassLookupTag.classId}"
}
}