From 784a911d1a4457fe666cf6508fef6c5fb254c511 Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Fri, 22 Apr 2022 12:16:13 +0300 Subject: [PATCH] FIR: Minor. Clarify some names at FirTypeIntersectionScopeContext --- .../scopes/JavaClassUseSiteMemberScope.kt | 22 +++++++++---------- .../impl/AbstractFirUseSiteMemberScope.kt | 2 +- .../scopes/impl/FirClassUseSiteMemberScope.kt | 2 +- .../scopes/impl/FirTypeIntersectionScope.kt | 2 +- .../impl/FirTypeIntersectionScopeContext.kt | 18 +++++++++------ 5 files changed, 25 insertions(+), 21 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt index 8fc9d35832a..ba6b3f6bfd6 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassUseSiteMemberScope.kt @@ -120,7 +120,7 @@ class JavaClassUseSiteMemberScope( * 2. Field from some java superclass (only one, if class have more than one superclass then we can choose * just one field because this is incorrect code anyway) */ - val fromSupertypes = supertypeScopeContext.collectCallables(name, FirScope::processPropertiesByName) + val fromSupertypes = supertypeScopeContext.collectIntersectionResultsForCallables(name, FirScope::processPropertiesByName) val (fieldsFromSupertype, propertiesFromSupertypes) = fromSupertypes.partition { it is ResultOfIntersection.SingleMember && it.chosenSymbol is FirFieldSymbol @@ -251,7 +251,7 @@ class JavaClassUseSiteMemberScope( private fun FirNamedFunctionSymbol.doesOverrideRenamedBuiltins(): Boolean { // e.g. 'removeAt' or 'toInt' val builtinName = SpecialGenericSignatures.getBuiltinFunctionNamesByJvmName(name) ?: return false - val builtinSpecialFromSuperTypes = supertypeScopeContext.collectMembersByScope(builtinName, FirScope::processFunctionsByName) + val builtinSpecialFromSuperTypes = supertypeScopeContext.collectMembersGroupedByScope(builtinName, FirScope::processFunctionsByName) .flatMap { (scope, symbols) -> symbols.filter { it.doesOverrideBuiltinWithDifferentJvmName(scope, session) } } @@ -273,7 +273,7 @@ class JavaClassUseSiteMemberScope( */ private fun FirNamedFunctionSymbol.shouldBeVisibleAsOverrideOfBuiltInWithErasedValueParameters(): Boolean { if (!name.sameAsBuiltinMethodWithErasedValueParameters) return false - val candidatesToOverride = supertypeScopeContext.collectMembersByScope(name, FirScope::processFunctionsByName) + val candidatesToOverride = supertypeScopeContext.collectMembersGroupedByScope(name, FirScope::processFunctionsByName) .flatMap { (scope, symbols) -> symbols.mapNotNull { BuiltinMethodsWithSpecialGenericSignature.getOverriddenBuiltinFunctionWithErasedValueParametersInJava(it, scope) @@ -320,7 +320,7 @@ class JavaClassUseSiteMemberScope( collectDeclaredFunctions(name, result) val explicitlyDeclaredFunctions = result.toSet() - val functionsWithScopeFromSupertypes = supertypeScopeContext.collectMembersByScope(name, FirScope::processFunctionsByName) + val functionsWithScopeFromSupertypes = supertypeScopeContext.collectMembersGroupedByScope(name, FirScope::processFunctionsByName) if ( !name.sameAsRenamedInJvmBuiltin && @@ -337,13 +337,13 @@ class JavaClassUseSiteMemberScope( } private fun processSpecialFunctions( - naturalName: Name, + requestedName: Name, explicitlyDeclaredFunctionsWithNaturalName: Collection, - functionsFromSupertypesWithNaturalName: MembersByScope, // candidates for override + functionsFromSupertypesWithRequestedName: MembersByScope, // candidates for override destination: MutableCollection ) { val resultsOfIntersectionToSaveInCache = mutableListOf>() - val list = supertypeScopeContext.collectCallablesImpl(functionsFromSupertypesWithNaturalName) + val list = supertypeScopeContext.convertGroupedCallablesToIntersectionResults(functionsFromSupertypesWithRequestedName) for (resultOfIntersectionWithNaturalName in list) { val someSymbolWithNaturalNameFromSuperType = resultOfIntersectionWithNaturalName.extractSomeSymbolFromSuperType() val explicitlyDeclaredFunctionWithNaturalName = explicitlyDeclaredFunctionsWithNaturalName.firstOrNull { @@ -357,7 +357,7 @@ class JavaClassUseSiteMemberScope( jvmName, someSymbolWithNaturalNameFromSuperType, explicitlyDeclaredFunctionWithNaturalName, - naturalName, + requestedName, resultOfIntersectionWithNaturalName, destination, resultsOfIntersectionToSaveInCache @@ -367,7 +367,7 @@ class JavaClassUseSiteMemberScope( if (processOverridesForFunctionsWithErasedValueParameter( resultOfIntersectionWithNaturalName.overriddenMembers, - naturalName, + requestedName, explicitlyDeclaredFunctionsWithNaturalName, destination, resultOfIntersectionWithNaturalName, @@ -392,7 +392,7 @@ class JavaClassUseSiteMemberScope( } } } - functionsFromSupertypes[naturalName] = resultsOfIntersectionToSaveInCache + functionsFromSupertypes[requestedName] = resultsOfIntersectionToSaveInCache } private fun processOverridesForFunctionsWithErasedValueParameter( @@ -521,7 +521,7 @@ class JavaClassUseSiteMemberScope( overriddenMembers.mapTo(this) { it.baseScope to listOf(it.member) } addAll(renamedFunctionsFromSupertypes) } - supertypeScopeContext.collectCallablesImpl(membersByScope) + supertypeScopeContext.convertGroupedCallablesToIntersectionResults(membersByScope) } } diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt index 9f84d80873e..1b48fba952d 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt @@ -96,7 +96,7 @@ abstract class AbstractFirUseSiteMemberScope( private fun getFunctionsFromSupertypesByName(name: Name): List> { return functionsFromSupertypes.getOrPut(name) { - supertypeScopeContext.collectCallables(name, FirScope::processFunctionsByName) + supertypeScopeContext.collectIntersectionResultsForCallables(name, FirScope::processFunctionsByName) } } diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteMemberScope.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteMemberScope.kt index a7b6fe457b9..b8ed77b2151 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteMemberScope.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassUseSiteMemberScope.kt @@ -71,7 +71,7 @@ class FirClassUseSiteMemberScope( } val fields = mutableListOf() - val properties = supertypeScopeContext.collectCallables(name) { propertyName, processor -> + val properties = supertypeScopeContext.collectIntersectionResultsForCallables(name) { propertyName, processor -> processPropertiesByName(propertyName) { when (it) { is FirPropertySymbol -> processor(it) diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt index 0e041606e99..1baaafa6e0c 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt @@ -48,7 +48,7 @@ class FirTypeIntersectionScope private constructor( return } - val callablesWithOverridden = intersectionContext.collectCallables(name, processCallables) + val callablesWithOverridden = intersectionContext.collectIntersectionResultsForCallables(name, processCallables) if (callablesWithOverridden.isEmpty()) { absentNames.add(name) diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScopeContext.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScopeContext.kt index f61973068dd..abeeea21b30 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScopeContext.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScopeContext.kt @@ -10,7 +10,9 @@ import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.caches.* -import org.jetbrains.kotlin.fir.declarations.* +import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration +import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin +import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration import org.jetbrains.kotlin.fir.declarations.utils.isExpect import org.jetbrains.kotlin.fir.declarations.utils.modality import org.jetbrains.kotlin.fir.declarations.utils.visibility @@ -20,7 +22,9 @@ import org.jetbrains.kotlin.fir.scopes.* import org.jetbrains.kotlin.fir.scopes.impl.FirIntersectionOverrideStorage.ContextForIntersectionOverrideConstruction import org.jetbrains.kotlin.fir.scopes.impl.FirTypeIntersectionScopeContext.ResultOfIntersection import org.jetbrains.kotlin.fir.symbols.impl.* -import org.jetbrains.kotlin.fir.types.* +import org.jetbrains.kotlin.fir.types.ConeKotlinType +import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType +import org.jetbrains.kotlin.fir.types.classId import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.Name import kotlin.contracts.ExperimentalContracts @@ -109,11 +113,11 @@ class FirTypeIntersectionScopeContext( } fun collectFunctions(name: Name): List> { - return collectCallables(name, FirScope::processFunctionsByName) + return collectIntersectionResultsForCallables(name, FirScope::processFunctionsByName) } @OptIn(PrivateForInline::class) - inline fun > collectMembersByScope( + inline fun > collectMembersGroupedByScope( name: Name, processCallables: FirScope.(Name, (D) -> Unit) -> Unit ): MembersByScope { @@ -132,14 +136,14 @@ class FirTypeIntersectionScopeContext( } @OptIn(PrivateForInline::class) - inline fun > collectCallables( + inline fun > collectIntersectionResultsForCallables( name: Name, processCallables: FirScope.(Name, (D) -> Unit) -> Unit ): List> { - return collectCallablesImpl(collectMembersByScope(name, processCallables)) + return convertGroupedCallablesToIntersectionResults(collectMembersGroupedByScope(name, processCallables)) } - fun > collectCallablesImpl( + fun > convertGroupedCallablesToIntersectionResults( membersByScope: List>> ): List> { if (membersByScope.isEmpty()) {