Use FirNamedFunctionSymbol in FirSimpleFunction & its inheritors

This commit is contained in:
Mikhail Glukhikh
2020-12-02 17:31:17 +03:00
committed by TeamCityServer
parent 15021f30ff
commit 91834ccf46
15 changed files with 20 additions and 26 deletions
@@ -200,7 +200,6 @@ fun FirSimpleFunction.overriddenFunctions(
containingClass: FirClass<*>,
context: CheckerContext
): List<FirFunctionSymbol<*>> {
val symbol = symbol as? FirNamedFunctionSymbol ?: return emptyList()
val firTypeScope = containingClass.unsubstitutedScope(
context.sessionHolder.session,
context.sessionHolder.scopeSession,
@@ -51,7 +51,7 @@ object FirTypeMismatchOnOverrideChecker : FirRegularClassChecker() {
private fun FirTypeScope.retrieveDirectOverriddenOf(function: FirSimpleFunction): List<FirFunctionSymbol<*>> {
processFunctionsByName(function.name) {}
return getDirectOverriddenFunctions(function.symbol as FirNamedFunctionSymbol)
return getDirectOverriddenFunctions(function.symbol)
}
private fun FirTypeScope.retrieveDirectOverriddenOf(property: FirProperty): List<FirPropertySymbol> {
@@ -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))
@@ -250,7 +250,6 @@ internal fun FirSimpleFunction.generateOverriddenFunctionSymbols(
val scope = containingClass.unsubstitutedScope(session, scopeSession, withForcedTypeCalculator = true)
scope.processFunctionsByName(name) {}
val overriddenSet = mutableSetOf<IrSimpleFunctionSymbol>()
val symbol = symbol as? FirNamedFunctionSymbol ?: return emptyList()
scope.processDirectlyOverriddenFunctions(symbol) {
if (it.fir.visibility == Visibilities.Private) {
return@processDirectlyOverriddenFunctions ProcessorAction.NEXT
@@ -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<FirSimpleFunction>,
symbol: FirNamedFunctionSymbol,
annotations: MutableList<FirAnnotationCall>,
dispatchReceiverType: ConeKotlinType?,
) : FirSimpleFunctionImpl(
@@ -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
@@ -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,
@@ -75,12 +75,10 @@ class FirStatusResolver(
buildList<FirCallableMemberDeclaration<*>> {
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
@@ -64,7 +64,7 @@ class FirDelegatedMemberScope(
newModality = Modality.OPEN,
).apply {
delegatedWrapperData = DelegatedWrapperData(functionSymbol.fir, containingClass.symbol.toLookupTag(), delegateField)
}.symbol as FirNamedFunctionSymbol
}.symbol
}
processor(delegatedSymbol)
}
@@ -54,7 +54,7 @@ object FirFakeOverrideGenerator {
}
private fun createSubstitutionOverrideFunction(
fakeOverrideSymbol: FirFunctionSymbol<FirSimpleFunction>,
fakeOverrideSymbol: FirNamedFunctionSymbol,
session: FirSession,
baseFunction: FirSimpleFunction,
newDispatchReceiverType: ConeKotlinType?,
@@ -85,7 +85,7 @@ object FirFakeOverrideGenerator {
}
fun createCopyForFirFunction(
newSymbol: FirFunctionSymbol<FirSimpleFunction>,
newSymbol: FirNamedFunctionSymbol,
baseFunction: FirSimpleFunction,
session: FirSession,
origin: FirDeclarationOrigin,
@@ -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
)
}
@@ -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<FirSimp
abstract override val dispatchReceiverType: ConeKotlinType?
abstract override val contractDescription: FirContractDescription
abstract val name: Name
abstract override val symbol: FirFunctionSymbol<FirSimpleFunction>
abstract override val symbol: FirNamedFunctionSymbol
abstract override val annotations: List<FirAnnotationCall>
abstract override val typeParameters: List<FirTypeParameter>
@@ -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<FirSimpleFunction>
open lateinit var symbol: FirNamedFunctionSymbol
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
override val typeParameters: MutableList<FirTypeParameter> = mutableListOf()
@@ -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<FirSimpleFunction>,
override val symbol: FirNamedFunctionSymbol,
override val annotations: MutableList<FirAnnotationCall>,
override val typeParameters: MutableList<FirTypeParameter>,
) : FirSimpleFunction() {
@@ -299,7 +299,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
parentArg(function, "F", simpleFunction)
parentArg(callableMemberDeclaration, "F", simpleFunction)
+name
+symbol("FirFunctionSymbol<FirSimpleFunction>")
+symbol("FirNamedFunctionSymbol")
+annotations
+typeParameters
}