diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/TowerLevels.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/TowerLevels.kt index 09149969233..1df48a17824 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/TowerLevels.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/TowerLevels.kt @@ -25,7 +25,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.cast interface TowerScopeLevel { sealed class Token> { - object Properties : Token() + object Properties : Token>() object Functions : Token>() object Objects : Token>() @@ -121,17 +121,30 @@ class MemberScopeTowerLevel( return ProcessorAction.NEXT } return when (token) { - TowerScopeLevel.Token.Properties -> processMembers(processor) { symbol -> - this.processPropertiesByName(name, symbol.cast()) + is TowerScopeLevel.Token.Properties -> processMembers(processor) { consumer -> + this.processPropertiesByName(name) { + // WARNING, DO NOT CAST FUNCTIONAL TYPE ITSELF + @Suppress("UNCHECKED_CAST") + consumer(it as T) + } } - TowerScopeLevel.Token.Functions -> processMembers(processor) { symbol -> + TowerScopeLevel.Token.Functions -> processMembers(processor) { consumer -> this.processFunctionsAndConstructorsByName( name, session, bodyResolveComponents, - noInnerConstructors = false, processor = symbol.cast() + noInnerConstructors = false, + processor = { + // WARNING, DO NOT CAST FUNCTIONAL TYPE ITSELF + @Suppress("UNCHECKED_CAST") + consumer(it as T) + } ) } - TowerScopeLevel.Token.Objects -> processMembers(processor) { symbol -> - this.processClassifiersByName(name, symbol.cast()) + TowerScopeLevel.Token.Objects -> processMembers(processor) { consumer -> + this.processClassifiersByName(name) { + // WARNING, DO NOT CAST FUNCTIONAL TYPE ITSELF + @Suppress("UNCHECKED_CAST") + consumer(it as T) + } } } } 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 91f5f0ac9c3..efed80d67e3 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 @@ -55,11 +55,11 @@ abstract class FirAbstractImportingScope( when (token) { TowerScopeLevel.Token.Functions -> scope.processFunctionsByName( callableId.callableName, - processor.cast() + processor ) TowerScopeLevel.Token.Properties -> scope.processPropertiesByName( callableId.callableName, - processor.cast() + processor ) } } else if (name.isSpecial || name.identifier.isNotEmpty()) {