diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt index c78bbd2d935..6e59e9879e3 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DataClassMembersGenerator.kt @@ -156,9 +156,7 @@ class DataClassMembersGenerator(val components: Fir2IrComponents) { withForcedTypeCalculator = true ).processFunctionsByName(name) { val declaration = it.fir - if (declaration is FirSimpleFunction && - declaration.matchesDataClassSyntheticMemberSignatures - ) { + if (declaration.matchesDataClassSyntheticMemberSignatures) { putIfAbsent(declaration.name, declaration) } } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DelegatedMemberGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DelegatedMemberGenerator.kt index 32f8027bb27..5bba834af73 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DelegatedMemberGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/DelegatedMemberGenerator.kt @@ -42,8 +42,6 @@ internal class DelegatedMemberGenerator( val subClassScope = firSubClass.unsubstitutedScope(session, scopeSession, withForcedTypeCalculator = true) subClassScope.processAllFunctions { functionSymbol -> - if (functionSymbol !is FirNamedFunctionSymbol) return@processAllFunctions - val unwrapped = functionSymbol .unwrapDelegateTarget(subClassLookupTag, subClassScope::getDirectOverriddenFunctions, firField, firSubClass) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt index 1d93cb0f28c..7fcc8ad800e 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyClass.kt @@ -139,7 +139,7 @@ class Fir2IrLazyClass( result += declarationStorage.getIrFunctionSymbol(declaration.symbol).owner } else { scope.processFunctionsByName(declaration.name) { - if (it is FirNamedFunctionSymbol && it.dispatchReceiverClassOrNull() == fir.symbol.toLookupTag()) { + if (it.dispatchReceiverClassOrNull() == fir.symbol.toLookupTag()) { if (it.isAbstractMethodOfAny()) { return@processFunctionsByName } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaAnnotationSyntheticPropertiesScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaAnnotationSyntheticPropertiesScope.kt index 1728ddcd160..0ed0a39f5c0 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaAnnotationSyntheticPropertiesScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaAnnotationSyntheticPropertiesScope.kt @@ -24,13 +24,13 @@ class JavaAnnotationSyntheticPropertiesScope( ) : FirTypeScope() { private val classId: ClassId = owner.classId private val names: Set = owner.fir.declarations.mapNotNullTo(mutableSetOf()) { (it as? FirSimpleFunction)?.name } - private val syntheticPropertiesCache = mutableMapOf, FirVariableSymbol<*>>() + private val syntheticPropertiesCache = mutableMapOf>() override fun processDeclaredConstructors(processor: (FirConstructorSymbol) -> Unit) { delegateScope.processDeclaredConstructors(processor) } - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { if (name in names) return delegateScope.processFunctionsByName(name, processor) } @@ -38,7 +38,7 @@ class JavaAnnotationSyntheticPropertiesScope( override fun processPropertiesByName(name: Name, processor: (FirVariableSymbol<*>) -> Unit) { if (name !in names) return delegateScope.processFunctionsByName(name) { functionSymbol -> - val function = functionSymbol.fir as? FirSimpleFunction ?: return@processFunctionsByName + val function = functionSymbol.fir val symbol = syntheticPropertiesCache.getOrPut(functionSymbol) { val callableId = CallableId(classId, name) FirAccessorSymbol(callableId, callableId).also { diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassMembersEnhancementScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassMembersEnhancementScope.kt index c7341de513d..fcedee9c6df 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassMembersEnhancementScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassMembersEnhancementScope.kt @@ -143,18 +143,18 @@ class JavaClassMembersEnhancementScope( return this } - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { useSiteMemberScope.processFunctionsByName(name) process@{ original -> val symbol = signatureEnhancement.enhancedFunction(original, name) val enhancedFunction = (symbol.fir as? FirSimpleFunction)?.changeSignatureIfErasedValueParameter() val enhancedFunctionSymbol = enhancedFunction?.symbol ?: symbol - if (enhancedFunctionSymbol is FirNamedFunctionSymbol && original is FirNamedFunctionSymbol) { + if (enhancedFunctionSymbol is FirNamedFunctionSymbol) { overriddenFunctions[enhancedFunctionSymbol] = original.fir .overriddenMembers(enhancedFunctionSymbol.fir.name) .mapNotNull { it.symbol as? FirNamedFunctionSymbol } + processor(enhancedFunctionSymbol) } - processor(enhancedFunctionSymbol) } return super.processFunctionsByName(name, processor) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticEnhancementScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticEnhancementScope.kt index a10c49a0d5e..0970e5b8845 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticEnhancementScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticEnhancementScope.kt @@ -30,10 +30,12 @@ class JavaClassStaticEnhancementScope( return super.processPropertiesByName(name, processor) } - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { useSiteStaticScope.processFunctionsByName(name) process@{ original -> val enhancedFunction = signatureEnhancement.enhancedFunction(original, name) - processor(enhancedFunction) + if (enhancedFunction is FirNamedFunctionSymbol) { + processor(enhancedFunction) + } } return super.processFunctionsByName(name, processor) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticUseSiteScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticUseSiteScope.kt index bd6ce009fd4..ba531606c4e 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticUseSiteScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticUseSiteScope.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.getContainingCallableNamesIfPresent -import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.fir.symbols.impl.isStatic @@ -24,11 +23,11 @@ class JavaClassStaticUseSiteScope internal constructor( private val superTypesScopes: List, javaTypeParameterStack: JavaTypeParameterStack, ) : FirScope(), FirContainingNamesAwareScope { - private val functions = hashMapOf>>() + private val functions = hashMapOf>() private val properties = hashMapOf>>() private val overrideChecker = JavaOverrideChecker(session, javaTypeParameterStack) - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { functions.getOrPut(name) { computeFunctions(name) }.forEach(processor) @@ -43,7 +42,7 @@ class JavaClassStaticUseSiteScope internal constructor( val result = mutableListOf() declaredMemberScope.processFunctionsByName(name) l@{ functionSymbol -> - if (functionSymbol !is FirNamedFunctionSymbol || !functionSymbol.isStatic) return@l + if (!functionSymbol.isStatic) return@l result.add(functionSymbol) superClassSymbols.removeAll { superClassSymbol -> 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 dc0aaee3938..1a442177c27 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 @@ -41,7 +41,7 @@ class JavaClassUseSiteMemberScope( internal val symbol = klass.symbol internal fun bindOverrides(name: Name) { - val overrideCandidates = mutableSetOf>() + val overrideCandidates = mutableSetOf() declaredMemberScope.processFunctionsByName(name) { overrideCandidates += it } @@ -93,7 +93,7 @@ class JavaClassUseSiteMemberScope( var getterSymbol: FirNamedFunctionSymbol? = null var setterSymbol: FirNamedFunctionSymbol? = null declaredMemberScope.processFunctionsByName(getterName) { functionSymbol -> - if (getterSymbol == null && functionSymbol is FirNamedFunctionSymbol) { + if (getterSymbol == null) { val function = functionSymbol.fir if (!function.isStatic && function.valueParameters.isEmpty()) { getterSymbol = functionSymbol @@ -103,7 +103,7 @@ class JavaClassUseSiteMemberScope( val setterName = session.syntheticNamesProvider.setterNameByGetterName(getterName) if (getterSymbol != null && setterName != null) { declaredMemberScope.processFunctionsByName(setterName) { functionSymbol -> - if (setterSymbol == null && functionSymbol is FirNamedFunctionSymbol) { + if (setterSymbol == null) { val function = functionSymbol.fir if (!function.isStatic && function.valueParameters.size == 1) { val returnTypeRef = function.returnTypeRef @@ -152,7 +152,7 @@ class JavaClassUseSiteMemberScope( return processAccessorFunctionsAndPropertiesByName(name, getterNames, processor) } - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { if (symbol.fir !is FirJavaClass) { return super.processFunctionsByName(name, processor) } diff --git a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/scopes/jvm/JvmMappedScope.kt b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/scopes/jvm/JvmMappedScope.kt index fa4a240654d..62a08051b3c 100644 --- a/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/scopes/jvm/JvmMappedScope.kt +++ b/compiler/fir/jvm/src/org/jetbrains/kotlin/fir/scopes/jvm/JvmMappedScope.kt @@ -11,7 +11,6 @@ import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.scopes.* import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.utils.addIfNotNull class JvmMappedScope( private val declaredMemberScope: FirScope, @@ -19,13 +18,13 @@ class JvmMappedScope( private val signatures: Signatures ) : FirTypeScope() { - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { val visibleMethods = signatures.visibleMethodSignaturesByName[name] ?: return declaredMemberScope.processFunctionsByName(name, processor) val declared = mutableListOf() declaredMemberScope.processFunctionsByName(name) { symbol -> - declared.addIfNotNull(symbol as FirNamedFunctionSymbol) + declared += symbol processor(symbol) } @@ -91,7 +90,7 @@ class JvmMappedScope( // NOTE: No-arg constructors @OptIn(ExperimentalStdlibApi::class) - private val additionalHiddenConstructors = buildSet { + private val additionalHiddenConstructors = buildSet { // kotlin.text.String pseudo-constructors should be used instead of java.lang.String constructors listOf( "", diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt index 699027ec044..0b8947f2440 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SamResolution.kt @@ -288,13 +288,8 @@ private fun FirRegularClass.findSingleAbstractMethodByNames( classUseSiteMemberScope.processFunctionsByName(candidateName) { functionSymbol -> val firFunction = functionSymbol.fir - require(firFunction is FirSimpleFunction) { - "${functionSymbol.callableId - .callableName} is expected to be _root_ide_package_.org.jetbrains.kotlin.fir.declarations.FirSimpleFunction, but ${functionSymbol::class} was found" - } - - if (firFunction.modality != Modality.ABSTRACT || firFunction - .isPublicInObject(checkOnlyName = false) + if (firFunction.modality != Modality.ABSTRACT || + firFunction.isPublicInObject(checkOnlyName = false) ) return@processFunctionsByName if (resultMethod != null) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/SuperCalls.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/SuperCalls.kt index 08f80b1da1c..02a97a20dde 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/SuperCalls.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/SuperCalls.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirProperty -import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.modality import org.jetbrains.kotlin.fir.dispatchReceiverClassOrNull import org.jetbrains.kotlin.fir.expressions.FirFunctionCall @@ -124,7 +123,7 @@ private inline fun BodyResolveComponents.resolveSupertypesByMembers( private fun BodyResolveComponents.getFunctionMembers(type: ConeKotlinType, name: Name): Collection> = buildList { type.scope(session, scopeSession, FakeOverrideTypeCalculator.DoNothing)?.processFunctionsByName(name) { - addIfNotNull(it.fir as? FirSimpleFunction) + add(it.fir) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/InferenceUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/InferenceUtils.kt index f884ff32dd0..602f1792166 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/InferenceUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/InferenceUtils.kt @@ -124,10 +124,10 @@ fun ConeKotlinType.findSubtypeOfNonSuspendFunctionalType(session: FirSession, ex } } -fun ConeClassLikeType.findBaseInvokeSymbol(session: FirSession, scopeSession: ScopeSession): FirFunctionSymbol<*>? { +fun ConeClassLikeType.findBaseInvokeSymbol(session: FirSession, scopeSession: ScopeSession): FirNamedFunctionSymbol? { require(this.isBuiltinFunctionalType(session)) val functionN = (lookupTag.toSymbol(session)?.fir as? FirClass<*>) ?: return null - var baseInvokeSymbol: FirFunctionSymbol<*>? = null + var baseInvokeSymbol: FirNamedFunctionSymbol? = null functionN.unsubstitutedScope( session, scopeSession, @@ -155,9 +155,7 @@ fun ConeKotlinType.findContributedInvokeSymbol( val scope = scope(session, scopeSession, fakeOverrideTypeCalculator) ?: return null var declaredInvoke: FirNamedFunctionSymbol? = null scope.processFunctionsByName(OperatorNameConventions.INVOKE) { functionSymbol -> - if (functionSymbol is FirNamedFunctionSymbol && - functionSymbol.fir.valueParameters.size == baseInvokeSymbol.fir.valueParameters.size - ) { + if (functionSymbol.fir.valueParameters.size == baseInvokeSymbol.fir.valueParameters.size) { declaredInvoke = functionSymbol return@processFunctionsByName } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirOverrideScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirOverrideScope.kt index 28fc28d6904..a1dcd85471f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirOverrideScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirOverrideScope.kt @@ -8,12 +8,10 @@ package org.jetbrains.kotlin.fir.scopes.impl import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* -import org.jetbrains.kotlin.fir.declarations.builder.FirSimpleFunctionBuilder import org.jetbrains.kotlin.fir.scopes.FirOverrideChecker import org.jetbrains.kotlin.fir.scopes.FirTypeScope import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol abstract class AbstractFirOverrideScope( val session: FirSession, diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt index b60a7d1a39d..ca22a5f4dc1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/AbstractFirUseSiteMemberScope.kt @@ -18,11 +18,11 @@ abstract class AbstractFirUseSiteMemberScope( protected val declaredMemberScope: FirScope ) : AbstractFirOverrideScope(session, overrideChecker) { - private val functions = hashMapOf>>() + private val functions = hashMapOf>() private val directOverriddenFunctions = hashMapOf>() protected val directOverriddenProperties = hashMapOf>() - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { functions.getOrPut(name) { doProcessFunctions(name) }.forEach { @@ -32,24 +32,20 @@ abstract class AbstractFirUseSiteMemberScope( private fun doProcessFunctions( name: Name - ): Collection> = mutableListOf>().apply { + ): Collection = mutableListOf().apply { val overrideCandidates = mutableSetOf>() declaredMemberScope.processFunctionsByName(name) { symbol -> if (symbol.isStatic) return@processFunctionsByName - if (symbol is FirNamedFunctionSymbol) { - val directOverridden = computeDirectOverridden(symbol) - this@AbstractFirUseSiteMemberScope.directOverriddenFunctions[symbol] = directOverridden - } + val directOverridden = computeDirectOverridden(symbol) + this@AbstractFirUseSiteMemberScope.directOverriddenFunctions[symbol] = directOverridden overrideCandidates += symbol add(symbol) } superTypesScope.processFunctionsByName(name) { - if (it !is FirConstructorSymbol) { - val overriddenBy = it.getOverridden(overrideCandidates) - if (overriddenBy == null) { - add(it) - } + val overriddenBy = it.getOverridden(overrideCandidates) + if (overriddenBy == null) { + add(it) } } } @@ -58,9 +54,7 @@ abstract class AbstractFirUseSiteMemberScope( val result = mutableListOf() val firSimpleFunction = symbol.fir superTypesScope.processFunctionsByName(symbol.callableId.callableName) { superSymbol -> - if (superSymbol is FirNamedFunctionSymbol && - overrideChecker.isOverriddenFunction(firSimpleFunction, superSymbol.fir) - ) { + if (overrideChecker.isOverriddenFunction(firSimpleFunction, superSymbol.fir)) { result.add(superSymbol) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirAbstractImportingScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirAbstractImportingScope.kt index 4111f925e23..23ddb2458b9 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirAbstractImportingScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirAbstractImportingScope.kt @@ -88,11 +88,11 @@ abstract class FirAbstractImportingScope( processor: (FirCallableSymbol<*>) -> Unit ) - final override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + final override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { return processCallables( name, TowerScopeLevel.Token.Functions - ) { if (it is FirFunctionSymbol<*>) processor(it) } + ) { if (it is FirNamedFunctionSymbol) processor(it) } } final override fun processPropertiesByName(name: Name, processor: (FirVariableSymbol<*>) -> Unit) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt index 2a9e5615f14..9d85dfc5f7d 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt @@ -45,7 +45,7 @@ class FirClassDeclaredMemberScope( result } - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { if (name == CONSTRUCTOR_NAME) return processCallables(name, processor) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt index c62711f7d2f..e6e22c6fdff 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt @@ -28,13 +28,13 @@ class FirClassSubstitutionScope( private val makeExpect: Boolean = false ) : FirTypeScope() { - private val substitutionOverrideFunctions = mutableMapOf, FirFunctionSymbol<*>>() + private val substitutionOverrideFunctions = mutableMapOf() private val substitutionOverrideConstructors = mutableMapOf() private val substitutionOverrideVariables = mutableMapOf, FirVariableSymbol<*>>() private val newOwnerClassId = dispatchReceiverTypeForSubstitutedMembers.lookupTag.classId - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { useSiteMemberScope.processFunctionsByName(name) process@{ original -> val function = substitutionOverrideFunctions.getOrPut(original) { createSubstitutionOverrideFunction(original) } processor(function) @@ -110,13 +110,9 @@ class FirClassSubstitutionScope( return substitutor.substituteOrNull(this) } - private fun createSubstitutionOverrideFunction(original: FirFunctionSymbol<*>): FirFunctionSymbol<*> { + private fun createSubstitutionOverrideFunction(original: FirNamedFunctionSymbol): FirNamedFunctionSymbol { if (substitutor == ConeSubstitutor.Empty) return original - val member = when (original) { - is FirNamedFunctionSymbol -> original.fir - is FirConstructorSymbol -> return original - else -> throw AssertionError("Should not be here") - } + val member = original.fir if (skipPrivateMembers && member.visibility == Visibilities.Private) return original val (newTypeParameters, newReceiverType, newReturnType, newSubstitutor, fakeOverrideSubstitution) = createSubstitutedData(member) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt index eafd6e2f1d4..6dc9c3586f6 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt @@ -33,9 +33,9 @@ class FirDelegatedMemberScope( private val dispatchReceiverType = containingClass.defaultType() private val overrideChecker = FirStandardOverrideChecker(session) - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { useSiteScope.processFunctionsByName(name) processor@{ functionSymbol -> - if (functionSymbol !is FirNamedFunctionSymbol || functionSymbol.fir.isPublicInAny()) { + if (functionSymbol.fir.isPublicInAny()) { processor(functionSymbol) return@processor } @@ -46,7 +46,7 @@ class FirDelegatedMemberScope( return@processor } - if (declaredMemberScope.getFunctions(name).any { it is FirNamedFunctionSymbol && overrideChecker.isOverriddenFunction(it.fir, original) }) { + if (declaredMemberScope.getFunctions(name).any { overrideChecker.isOverriddenFunction(it.fir, original) }) { processor(functionSymbol) return@processor } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirLocalScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirLocalScope.kt index 3f96d7ee5d4..d4dd9312a77 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirLocalScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirLocalScope.kt @@ -21,7 +21,7 @@ import org.jetbrains.kotlin.name.Name class FirLocalScope private constructor( val properties: PersistentMap>, - val functions: PersistentMultimap>, + val functions: PersistentMultimap, val classes: PersistentMap ) : FirScope(), FirContainingNamesAwareScope { constructor() : this(persistentMapOf(), PersistentMultimap(), persistentMapOf()) @@ -50,7 +50,7 @@ class FirLocalScope private constructor( ) } - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { for (function in functions[name]) { processor(function) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirNestedClassifierScopeWithSubstitution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirNestedClassifierScopeWithSubstitution.kt index a3fc0f9f7db..6af59a16a95 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirNestedClassifierScopeWithSubstitution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirNestedClassifierScopeWithSubstitution.kt @@ -20,7 +20,7 @@ private class FirNestedClassifierScopeWithSubstitution( private val substitutor: ConeSubstitutor ) : FirScope() { - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { scope.processFunctionsByName(name, processor) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirObjectImportedCallableScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirObjectImportedCallableScope.kt index 8d4e082837c..676c22fe672 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirObjectImportedCallableScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirObjectImportedCallableScope.kt @@ -20,12 +20,8 @@ class FirObjectImportedCallableScope( private val importedClassId: ClassId, private val objectUseSiteScope: FirTypeScope ) : FirScope(), FirContainingNamesAwareScope { - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { objectUseSiteScope.processFunctionsByName(name) wrapper@{ symbol -> - if (symbol !is FirNamedFunctionSymbol) { - processor(symbol) - return@wrapper - } val function = symbol.fir val syntheticFunction = buildSimpleFunctionCopy(function) { origin = FirDeclarationOrigin.ImportedFromObject diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirOnlyCallablesScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirOnlyCallablesScope.kt index 196159d97c0..1e145ffce37 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirOnlyCallablesScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirOnlyCallablesScope.kt @@ -6,12 +6,12 @@ package org.jetbrains.kotlin.fir.scopes.impl import org.jetbrains.kotlin.fir.scopes.FirScope -import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.name.Name class FirOnlyCallablesScope(val delegate: FirScope) : FirScope() { - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { return delegate.processFunctionsByName(name, processor) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirPackageMemberScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirPackageMemberScope.kt index ddef6bc15f2..01a2658079c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirPackageMemberScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirPackageMemberScope.kt @@ -10,10 +10,7 @@ import org.jetbrains.kotlin.fir.resolve.firSymbolProvider import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolvedForCalls import org.jetbrains.kotlin.fir.scopes.FirScope -import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol +import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name @@ -39,7 +36,7 @@ class FirPackageMemberScope(val fqName: FqName, val session: FirSession) : FirSc } } - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { processCallables(name, processor) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirScopeWithFakeOverrideTypeCalculator.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirScopeWithFakeOverrideTypeCalculator.kt index cf9466297d9..62d2e0d49f5 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirScopeWithFakeOverrideTypeCalculator.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirScopeWithFakeOverrideTypeCalculator.kt @@ -24,7 +24,7 @@ class FirScopeWithFakeOverrideTypeCalculator( delegate.processClassifiersByNameWithSubstitution(name, processor) } - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { delegate.processFunctionsByName(name) { updateReturnType(it.fir) processor(it) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirStaticScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirStaticScope.kt index ecc31ee1edf..b8900ce9f84 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirStaticScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirStaticScope.kt @@ -10,9 +10,8 @@ import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.isStatic import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.scopes.FirScope -import org.jetbrains.kotlin.fir.scopes.getContainingCallableNamesIfPresent import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.name.Name @@ -21,7 +20,7 @@ class FirStaticScope(private val delegateScope: FirScope) : FirScope() { delegateScope.processClassifiersByNameWithSubstitution(name, processor) } - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { delegateScope.processFunctionsByName(name) { if ((it.fir as? FirSimpleFunction)?.isStatic == true) { processor(it) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt index 64498314fc6..88913c34eca 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScope.kt @@ -40,7 +40,7 @@ class FirTypeIntersectionScope private constructor( private val intersectionOverrides: MutableMap, MemberWithBaseScope>> = mutableMapOf() - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { if (!processCallablesByName(name, processor, absentFunctions, FirScope::processFunctionsByName)) { super.processFunctionsByName(name, processor) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirCompositeScope.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirCompositeScope.kt index 4f6fbe520fa..16037f8c429 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirCompositeScope.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirCompositeScope.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.scopes import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.name.Name @@ -37,7 +37,7 @@ class FirCompositeScope(val scopes: Iterable) : FirScope(), FirContain } } - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { + override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { return processComposite(FirScope::processFunctionsByName, name, processor) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirContainingNamesAwareScope.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirContainingNamesAwareScope.kt index d0fcc4c6325..ebce240c8be 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirContainingNamesAwareScope.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirContainingNamesAwareScope.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.scopes import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol import org.jetbrains.kotlin.name.Name @@ -21,7 +22,7 @@ fun FirScope.getContainingCallableNamesIfPresent(): Set = fun FirScope.getContainingClassifierNamesIfPresent(): Set = if (this is FirContainingNamesAwareScope) getClassifierNames() else emptySet() -fun S.processAllFunctions(processor: (FirFunctionSymbol<*>) -> Unit) where S : FirScope, S : FirContainingNamesAwareScope { +fun S.processAllFunctions(processor: (FirNamedFunctionSymbol) -> Unit) where S : FirScope, S : FirContainingNamesAwareScope { for (name in getCallableNames()) { processFunctionsByName(name, processor) } @@ -33,12 +34,6 @@ fun S.processAllProperties(processor: (FirVariableSymbol<*>) -> Unit) where } } -fun S.collectAllFunctions(): Collection> where S : FirScope, S : FirContainingNamesAwareScope { - return mutableListOf>().apply { - processAllFunctions(this::add) - } -} - fun S.collectAllProperties(): Collection> where S : FirScope, S : FirContainingNamesAwareScope { return mutableListOf>().apply { processAllProperties(this::add) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt index 3345ec25923..835b8d15e63 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt @@ -18,7 +18,7 @@ abstract class FirScope { open fun processFunctionsByName( name: Name, - processor: (FirFunctionSymbol<*>) -> Unit + processor: (FirNamedFunctionSymbol) -> Unit ) { } @@ -40,7 +40,7 @@ fun FirScope.getSingleClassifier(name: Name): FirClassifierSymbol<*>? = mutableL processClassifiersByName(name, this::add) }.singleOrNull() -fun FirScope.getFunctions(name: Name): List> = mutableListOf>().apply { +fun FirScope.getFunctions(name: Name): List = mutableListOf().apply { processFunctionsByName(name, this::add) } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/scopes/KtFirDelegatingScope.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/scopes/KtFirDelegatingScope.kt index 3c6ce6fc5d1..11f67dfc73f 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/scopes/KtFirDelegatingScope.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/scopes/KtFirDelegatingScope.kt @@ -5,13 +5,10 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.scopes -import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.isSubstitutionOverride import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope import org.jetbrains.kotlin.fir.scopes.FirScope -import org.jetbrains.kotlin.fir.scopes.getDeclaredConstructors import org.jetbrains.kotlin.fir.scopes.processClassifiersByName -import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.idea.frontend.api.ValidityToken import org.jetbrains.kotlin.idea.frontend.api.fir.KtSymbolByFirBuilder @@ -62,9 +59,7 @@ internal fun FirScope.getCallableSymbols(callableNames: Collection, builde callableNames.forEach { name -> val callables = mutableListOf() processFunctionsByName(name) { firSymbol -> - (firSymbol.fir as? FirSimpleFunction)?.let { fir -> - callables.add(builder.buildFunctionSymbol(fir)) - } + callables.add(builder.buildFunctionSymbol(firSymbol.fir)) } processPropertiesByName(name) { firSymbol -> val symbol = when {