From 91834ccf46728ec01e449ab4705fa502869be3cf Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 2 Dec 2020 17:31:17 +0300 Subject: [PATCH] Use FirNamedFunctionSymbol in FirSimpleFunction & its inheritors --- .../kotlin/fir/analysis/checkers/FirHelpers.kt | 1 - .../declaration/FirTypeMismatchOnOverrideChecker.kt | 2 +- .../resolve/providers/impl/FirBuiltinSymbolProvider.kt | 2 +- .../jetbrains/kotlin/fir/backend/ConversionUtils.kt | 1 - .../kotlin/fir/java/declarations/FirJavaMethod.kt | 4 ++-- .../src/org/jetbrains/kotlin/fir/SessionUtils.kt | 2 -- .../kotlin/fir/resolve/calls/ConstructorProcessing.kt | 2 +- .../fir/resolve/transformers/FirStatusResolver.kt | 10 ++++------ .../kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt | 2 +- .../kotlin/fir/scopes/impl/FirFakeOverrideGenerator.kt | 4 ++-- .../jetbrains/kotlin/fir/scopes/impl/FirLocalScope.kt | 2 +- .../kotlin/fir/declarations/FirSimpleFunction.kt | 4 ++-- .../declarations/builder/FirSimpleFunctionBuilder.kt | 4 ++-- .../fir/declarations/impl/FirSimpleFunctionImpl.kt | 4 ++-- .../kotlin/fir/tree/generator/NodeConfigurator.kt | 2 +- 15 files changed, 20 insertions(+), 26 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt index a0023cc3134..7ce2f17043d 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/FirHelpers.kt @@ -200,7 +200,6 @@ fun FirSimpleFunction.overriddenFunctions( containingClass: FirClass<*>, context: CheckerContext ): List> { - val symbol = symbol as? FirNamedFunctionSymbol ?: return emptyList() val firTypeScope = containingClass.unsubstitutedScope( context.sessionHolder.session, context.sessionHolder.scopeSession, diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeMismatchOnOverrideChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeMismatchOnOverrideChecker.kt index 318fa8af947..cb87609960d 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeMismatchOnOverrideChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeMismatchOnOverrideChecker.kt @@ -51,7 +51,7 @@ object FirTypeMismatchOnOverrideChecker : FirRegularClassChecker() { private fun FirTypeScope.retrieveDirectOverriddenOf(function: FirSimpleFunction): List> { processFunctionsByName(function.name) {} - return getDirectOverriddenFunctions(function.symbol as FirNamedFunctionSymbol) + return getDirectOverriddenFunctions(function.symbol) } private fun FirTypeScope.retrieveDirectOverriddenOf(property: FirProperty): List { diff --git a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirBuiltinSymbolProvider.kt b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirBuiltinSymbolProvider.kt index 2deebf524dd..0ddaad82ffb 100644 --- a/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirBuiltinSymbolProvider.kt +++ b/compiler/fir/fir-deserialization/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirBuiltinSymbolProvider.kt @@ -233,7 +233,7 @@ class FirBuiltinSymbolProvider(session: FirSession, val kotlinScopeProvider: Kot val functionClass = getClassLikeSymbolByFqName(classId(arity)) ?: return null val invoke = functionClass.fir.declarations.find { it is FirSimpleFunction && it.name == OperatorNameConventions.INVOKE } ?: return null - return (invoke as FirSimpleFunction).symbol as? FirNamedFunctionSymbol + return (invoke as FirSimpleFunction).symbol } private fun FunctionClassKind.classId(arity: Int) = ClassId(packageFqName, numberedClassName(arity)) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt index 6d3a9201a61..d34e472b1b6 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt @@ -250,7 +250,6 @@ internal fun FirSimpleFunction.generateOverriddenFunctionSymbols( val scope = containingClass.unsubstitutedScope(session, scopeSession, withForcedTypeCalculator = true) scope.processFunctionsByName(name) {} val overriddenSet = mutableSetOf() - val symbol = symbol as? FirNamedFunctionSymbol ?: return emptyList() scope.processDirectlyOverriddenFunctions(symbol) { if (it.fir.visibility == Visibilities.Private) { return@processDirectlyOverriddenFunctions ProcessorAction.NEXT diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaMethod.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaMethod.kt index 5beda4584f5..bd8ec9a79aa 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaMethod.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaMethod.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.declarations.builder.FirSimpleFunctionBuilder import org.jetbrains.kotlin.fir.declarations.impl.FirSimpleFunctionImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock -import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.jvm.FirJavaTypeRef @@ -52,7 +52,7 @@ class FirJavaMethod @FirImplementationDetail constructor( name: Name, status: FirDeclarationStatus, containerSource: DeserializedContainerSource?, - symbol: FirFunctionSymbol, + symbol: FirNamedFunctionSymbol, annotations: MutableList, dispatchReceiverType: ConeKotlinType?, ) : FirSimpleFunctionImpl( diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/SessionUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/SessionUtils.kt index 050a43bf830..cf587bfbd09 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/SessionUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/SessionUtils.kt @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.fir.resolve.inference.inferenceComponents import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.scopes.processOverriddenFunctions import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope -import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.types.ConeInferenceContext import org.jetbrains.kotlin.fir.types.ConeTypeCheckerContext @@ -30,7 +29,6 @@ fun FirSimpleFunction.lowestVisibilityAmongOverrides( session: FirSession, scopeSession: ScopeSession ): Visibility { - val symbol = symbol as? FirNamedFunctionSymbol ?: return visibility val firTypeScope = containingClass.unsubstitutedScope(session, scopeSession, withForcedTypeCalculator = false) var visibility = visibility diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConstructorProcessing.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConstructorProcessing.kt index fb830ca4691..f812220e4e2 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConstructorProcessing.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConstructorProcessing.kt @@ -117,7 +117,7 @@ private fun FirTypeAliasSymbol.findSAMConstructorForTypeAlias( if (type.typeArguments.isEmpty()) return samConstructorForClass - val namedSymbol = samConstructorForClass.symbol as? FirNamedFunctionSymbol ?: return null + val namedSymbol = samConstructorForClass.symbol val substitutor = prepareSubstitutorForTypeAliasConstructors( type, diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt index e6ec933f3bd..a3d0a6562de 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt @@ -75,12 +75,10 @@ class FirStatusResolver( buildList> { val scope = containingClass.unsubstitutedScope(session, scopeSession, withForcedTypeCalculator = false) val symbol = function.symbol - if (symbol is FirNamedFunctionSymbol) { - scope.processFunctionsByName(function.name) {} - scope.processDirectOverriddenFunctionsWithBaseScope(symbol) { overriddenSymbol, _ -> - this += overriddenSymbol.fir - ProcessorAction.NEXT - } + scope.processFunctionsByName(function.name) {} + scope.processDirectOverriddenFunctionsWithBaseScope(symbol) { overriddenSymbol, _ -> + this += overriddenSymbol.fir + ProcessorAction.NEXT } }.mapNotNull { it.status as? FirResolvedDeclarationStatus 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 3e20196a1d2..eafd6e2f1d4 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 @@ -64,7 +64,7 @@ class FirDelegatedMemberScope( newModality = Modality.OPEN, ).apply { delegatedWrapperData = DelegatedWrapperData(functionSymbol.fir, containingClass.symbol.toLookupTag(), delegateField) - }.symbol as FirNamedFunctionSymbol + }.symbol } processor(delegatedSymbol) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirFakeOverrideGenerator.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirFakeOverrideGenerator.kt index 27b8d8f85f2..5171b81f6ce 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirFakeOverrideGenerator.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirFakeOverrideGenerator.kt @@ -54,7 +54,7 @@ object FirFakeOverrideGenerator { } private fun createSubstitutionOverrideFunction( - fakeOverrideSymbol: FirFunctionSymbol, + fakeOverrideSymbol: FirNamedFunctionSymbol, session: FirSession, baseFunction: FirSimpleFunction, newDispatchReceiverType: ConeKotlinType?, @@ -85,7 +85,7 @@ object FirFakeOverrideGenerator { } fun createCopyForFirFunction( - newSymbol: FirFunctionSymbol, + newSymbol: FirNamedFunctionSymbol, baseFunction: FirSimpleFunction, session: FirSession, origin: FirDeclarationOrigin, 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 c3b257d3bda..3f96d7ee5d4 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 @@ -34,7 +34,7 @@ class FirLocalScope private constructor( fun storeFunction(function: FirSimpleFunction): FirLocalScope { return FirLocalScope( - properties, functions.put(function.name, function.symbol as FirNamedFunctionSymbol), classes + properties, functions.put(function.name, function.symbol), classes ) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt index db8a0c96919..5db64495e60 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirSimpleFunction.kt @@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.contracts.FirContractDescription import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference -import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.name.Name @@ -40,7 +40,7 @@ abstract class FirSimpleFunction : FirPureAbstractElement(), FirFunction + abstract override val symbol: FirNamedFunctionSymbol abstract override val annotations: List abstract override val typeParameters: List diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSimpleFunctionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSimpleFunctionBuilder.kt index ca78e01239b..dfdded038c9 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSimpleFunctionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirSimpleFunctionBuilder.kt @@ -26,7 +26,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirSimpleFunctionImpl import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference -import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* @@ -54,7 +54,7 @@ open class FirSimpleFunctionBuilder : FirFunctionBuilder, FirTypeParametersOwner open var dispatchReceiverType: ConeKotlinType? = null open var contractDescription: FirContractDescription = FirEmptyContractDescription open lateinit var name: Name - open lateinit var symbol: FirFunctionSymbol + open lateinit var symbol: FirNamedFunctionSymbol override val annotations: MutableList = mutableListOf() override val typeParameters: MutableList = mutableListOf() diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt index 436d7a0fb7d..849c0cc26b8 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirSimpleFunctionImpl.kt @@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference -import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.name.Name @@ -46,7 +46,7 @@ open class FirSimpleFunctionImpl @FirImplementationDetail constructor( override val dispatchReceiverType: ConeKotlinType?, override var contractDescription: FirContractDescription, override val name: Name, - override val symbol: FirFunctionSymbol, + override val symbol: FirNamedFunctionSymbol, override val annotations: MutableList, override val typeParameters: MutableList, ) : FirSimpleFunction() { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index c3af76d7f56..ae47709304d 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -299,7 +299,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild parentArg(function, "F", simpleFunction) parentArg(callableMemberDeclaration, "F", simpleFunction) +name - +symbol("FirFunctionSymbol") + +symbol("FirNamedFunctionSymbol") +annotations +typeParameters }