Simplify: FirSymbolProvider.getClassDeclaredPropertySymbols

This commit is contained in:
Mikhail Glukhikh
2020-12-07 13:40:33 +03:00
parent e344d9e438
commit d90cc452fe
3 changed files with 9 additions and 11 deletions
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.resolve.bindSymbolToLookupTag
import org.jetbrains.kotlin.fir.resolve.defaultType
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedReferenceError
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
import org.jetbrains.kotlin.fir.resolve.providers.getClassDeclaredCallableSymbols
import org.jetbrains.kotlin.fir.resolve.providers.getClassDeclaredPropertySymbols
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.expectedConeType
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.firUnsafe
@@ -557,10 +557,10 @@ private fun JavaAnnotationArgument.toFirExpression(
val classId = this@toFirExpression.enumClassId
val entryName = this@toFirExpression.entryName
val calleeReference = if (classId != null && entryName != null) {
val callableSymbol = session.firSymbolProvider.getClassDeclaredCallableSymbols(
val propertySymbol = session.firSymbolProvider.getClassDeclaredPropertySymbols(
classId, entryName
).firstOrNull()
callableSymbol?.let {
propertySymbol?.let {
buildResolvedNamedReference {
name = entryName
resolvedSymbol = it
@@ -197,16 +197,16 @@ class KotlinDeserializedJvmSymbolsProvider(
private fun ClassId.toEnumEntryReferenceExpression(name: Name): FirExpression {
return buildFunctionCall {
val entryCallableSymbol =
this@KotlinDeserializedJvmSymbolsProvider.session.firSymbolProvider.getClassDeclaredCallableSymbols(
val entryPropertySymbol =
this@KotlinDeserializedJvmSymbolsProvider.session.firSymbolProvider.getClassDeclaredPropertySymbols(
this@toEnumEntryReferenceExpression, name,
).firstOrNull()
calleeReference = when {
entryCallableSymbol != null -> {
entryPropertySymbol != null -> {
buildResolvedNamedReference {
this.name = name
resolvedSymbol = entryCallableSymbol
resolvedSymbol = entryPropertySymbol
}
}
else -> {
@@ -35,13 +35,11 @@ abstract class FirSymbolProvider(val session: FirSession) : FirSessionComponent
abstract fun getPackage(fqName: FqName): FqName? // TODO: Replace to symbol sometime
}
fun FirSymbolProvider.getClassDeclaredCallableSymbols(classId: ClassId, name: Name): List<FirCallableSymbol<*>> {
fun FirSymbolProvider.getClassDeclaredPropertySymbols(classId: ClassId, name: Name): List<FirVariableSymbol<*>> {
val classSymbol = getClassLikeSymbolByFqName(classId) as? FirRegularClassSymbol ?: return emptyList()
val declaredMemberScope = declaredMemberScope(classSymbol.fir)
val result = mutableListOf<FirCallableSymbol<*>>()
declaredMemberScope.processFunctionsByName(name, result::add)
val result = mutableListOf<FirVariableSymbol<*>>()
declaredMemberScope.processPropertiesByName(name, result::add)
if (name == classId.shortClassName) declaredMemberScope.processDeclaredConstructors(result::add)
return result
}