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 25f2d3c19f4..b6731e79305 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 @@ -15,7 +15,6 @@ import org.jetbrains.kotlin.fir.originalForSubstitutionOverride import org.jetbrains.kotlin.fir.scopes.* import org.jetbrains.kotlin.fir.scopes.impl.delegatedWrapperData import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag -import org.jetbrains.kotlin.fir.symbols.PossiblyFirFakeOverrideSymbol import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.ir.declarations.* @@ -85,12 +84,12 @@ internal class DelegatedMemberGenerator( } } - private inline fun > S.unwrapDelegateTarget( + private inline fun , reified D : FirCallableMemberDeclaration> S.unwrapDelegateTarget( subClassLookupTag: ConeClassLikeLookupTag, noinline directOverridden: S.() -> List, firField: FirField, firSubClass: FirClass<*>, - ): D? where S : FirCallableSymbol, S : PossiblyFirFakeOverrideSymbol { + ): D? { val unwrappedIntersectionSymbol = this.unwrapIntersectionOverride(directOverridden) ?: return null @@ -117,7 +116,6 @@ internal class DelegatedMemberGenerator( } private fun > S.unwrapIntersectionOverride(directOverridden: S.() -> List): S? { - if (this !is PossiblyFirFakeOverrideSymbol<*, *>) return this if (this.fir.isIntersectionOverride) return directOverridden().firstOrNull { it.fir.delegatedWrapperData != null } return this } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt index fde929a62dd..ca15dcb9add 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/FakeOverrideGenerator.kt @@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.scopes.impl.FirFakeOverrideGenerator import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag -import org.jetbrains.kotlin.fir.symbols.PossiblyFirFakeOverrideSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol @@ -130,7 +129,7 @@ class FakeOverrideGenerator( return result } - private inline fun , reified S, reified I : IrDeclaration> createFakeOverriddenIfNeeded( + private inline fun , reified S : FirCallableSymbol, reified I : IrDeclaration> createFakeOverriddenIfNeeded( klass: FirClass<*>, irClass: IrClass, isLocal: Boolean, @@ -144,7 +143,7 @@ class FakeOverrideGenerator( realDeclarationSymbols: Set>, computeDirectOverridden: FirTypeScope.(S) -> List, scope: FirTypeScope, - ) where S : FirCallableSymbol, S : PossiblyFirFakeOverrideSymbol { + ) { if (originalSymbol !is S || originalSymbol in realDeclarationSymbols) return val classLookupTag = klass.symbol.toLookupTag() val originalDeclaration = originalSymbol.fir @@ -189,7 +188,7 @@ class FakeOverrideGenerator( } } - private inline fun > computeBaseSymbols( + private inline fun > computeBaseSymbols( symbol: S, basedSymbol: S, directOverridden: FirTypeScope.(S) -> List, @@ -199,7 +198,7 @@ class FakeOverrideGenerator( if (symbol.fir.origin != FirDeclarationOrigin.IntersectionOverride) return listOf(basedSymbol) return scope.directOverridden(symbol).map { @Suppress("UNCHECKED_CAST") - if (it is PossiblyFirFakeOverrideSymbol<*, *> && it.fir.isSubstitutionOverride && it.dispatchReceiverClassOrNull() == containingClass) + if (it.fir.isSubstitutionOverride && it.dispatchReceiverClassOrNull() == containingClass) it.originalForSubstitutionOverride!! else it diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/PossiblyFirFakeOverrideSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/PossiblyFirFakeOverrideSymbol.kt deleted file mode 100644 index 24858ebb6d6..00000000000 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/PossiblyFirFakeOverrideSymbol.kt +++ /dev/null @@ -1,11 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.symbols - -import org.jetbrains.kotlin.fir.FirSymbolOwner -import org.jetbrains.kotlin.fir.declarations.FirDeclaration - -interface PossiblyFirFakeOverrideSymbol> : FirBasedSymbol where E : FirSymbolOwner, E : FirDeclaration diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt index f941cea592d..333105d0adc 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirFunctionSymbol.kt @@ -8,7 +8,6 @@ package org.jetbrains.kotlin.fir.symbols.impl import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.symbols.AccessorSymbol import org.jetbrains.kotlin.fir.symbols.CallableId -import org.jetbrains.kotlin.fir.symbols.PossiblyFirFakeOverrideSymbol import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name @@ -24,7 +23,7 @@ sealed class FirFunctionSymbol>( open class FirNamedFunctionSymbol( callableId: CallableId, -) : FirFunctionSymbol(callableId), PossiblyFirFakeOverrideSymbol +) : FirFunctionSymbol(callableId) class FirConstructorSymbol( callableId: CallableId diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirVariableSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirVariableSymbol.kt index 257dffb23af..87d90e6ec24 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirVariableSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirVariableSymbol.kt @@ -12,7 +12,6 @@ import org.jetbrains.kotlin.fir.declarations.FirVariable import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.symbols.CallableId -import org.jetbrains.kotlin.fir.symbols.PossiblyFirFakeOverrideSymbol import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name @@ -23,7 +22,7 @@ open class FirVariableSymbol>(override val callableId: Callab open class FirPropertySymbol( callableId: CallableId, -) : FirVariableSymbol(callableId), PossiblyFirFakeOverrideSymbol { +) : FirVariableSymbol(callableId) { // TODO: should we use this constructor for local variables? constructor(name: Name) : this(CallableId(name)) }