FIR: Drop PossiblyFirFakeOverrideSymbol
This commit is contained in:
+2
-4
@@ -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 <reified S, reified D : FirCallableMemberDeclaration<D>> S.unwrapDelegateTarget(
|
||||
private inline fun <reified S : FirCallableSymbol<D>, reified D : FirCallableMemberDeclaration<D>> S.unwrapDelegateTarget(
|
||||
subClassLookupTag: ConeClassLikeLookupTag,
|
||||
noinline directOverridden: S.() -> List<S>,
|
||||
firField: FirField,
|
||||
firSubClass: FirClass<*>,
|
||||
): D? where S : FirCallableSymbol<D>, S : PossiblyFirFakeOverrideSymbol<D, S> {
|
||||
): D? {
|
||||
val unwrappedIntersectionSymbol =
|
||||
this.unwrapIntersectionOverride(directOverridden) ?: return null
|
||||
|
||||
@@ -117,7 +116,6 @@ internal class DelegatedMemberGenerator(
|
||||
}
|
||||
|
||||
private fun <S : FirCallableSymbol<*>> S.unwrapIntersectionOverride(directOverridden: S.() -> List<S>): S? {
|
||||
if (this !is PossiblyFirFakeOverrideSymbol<*, *>) return this
|
||||
if (this.fir.isIntersectionOverride) return directOverridden().firstOrNull { it.fir.delegatedWrapperData != null }
|
||||
return this
|
||||
}
|
||||
|
||||
+4
-5
@@ -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 D : FirCallableMemberDeclaration<D>, reified S, reified I : IrDeclaration> createFakeOverriddenIfNeeded(
|
||||
private inline fun <reified D : FirCallableMemberDeclaration<D>, reified S : FirCallableSymbol<D>, reified I : IrDeclaration> createFakeOverriddenIfNeeded(
|
||||
klass: FirClass<*>,
|
||||
irClass: IrClass,
|
||||
isLocal: Boolean,
|
||||
@@ -144,7 +143,7 @@ class FakeOverrideGenerator(
|
||||
realDeclarationSymbols: Set<AbstractFirBasedSymbol<*>>,
|
||||
computeDirectOverridden: FirTypeScope.(S) -> List<S>,
|
||||
scope: FirTypeScope,
|
||||
) where S : FirCallableSymbol<D>, S : PossiblyFirFakeOverrideSymbol<D, S> {
|
||||
) {
|
||||
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 <S : FirCallableSymbol<*>> computeBaseSymbols(
|
||||
private inline fun <reified S : FirCallableSymbol<*>> computeBaseSymbols(
|
||||
symbol: S,
|
||||
basedSymbol: S,
|
||||
directOverridden: FirTypeScope.(S) -> List<S>,
|
||||
@@ -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
|
||||
|
||||
-11
@@ -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<E, S : FirBasedSymbol<E>> : FirBasedSymbol<E> where E : FirSymbolOwner<E>, E : FirDeclaration
|
||||
@@ -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<D : FirFunction<D>>(
|
||||
|
||||
open class FirNamedFunctionSymbol(
|
||||
callableId: CallableId,
|
||||
) : FirFunctionSymbol<FirSimpleFunction>(callableId), PossiblyFirFakeOverrideSymbol<FirSimpleFunction, FirNamedFunctionSymbol>
|
||||
) : FirFunctionSymbol<FirSimpleFunction>(callableId)
|
||||
|
||||
class FirConstructorSymbol(
|
||||
callableId: CallableId
|
||||
|
||||
@@ -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<D : FirVariable<D>>(override val callableId: Callab
|
||||
|
||||
open class FirPropertySymbol(
|
||||
callableId: CallableId,
|
||||
) : FirVariableSymbol<FirProperty>(callableId), PossiblyFirFakeOverrideSymbol<FirProperty, FirPropertySymbol> {
|
||||
) : FirVariableSymbol<FirProperty>(callableId) {
|
||||
// TODO: should we use this constructor for local variables?
|
||||
constructor(name: Name) : this(CallableId(name))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user