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.*
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.delegatedWrapperData
|
import org.jetbrains.kotlin.fir.scopes.impl.delegatedWrapperData
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
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.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
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,
|
subClassLookupTag: ConeClassLikeLookupTag,
|
||||||
noinline directOverridden: S.() -> List<S>,
|
noinline directOverridden: S.() -> List<S>,
|
||||||
firField: FirField,
|
firField: FirField,
|
||||||
firSubClass: FirClass<*>,
|
firSubClass: FirClass<*>,
|
||||||
): D? where S : FirCallableSymbol<D>, S : PossiblyFirFakeOverrideSymbol<D, S> {
|
): D? {
|
||||||
val unwrappedIntersectionSymbol =
|
val unwrappedIntersectionSymbol =
|
||||||
this.unwrapIntersectionOverride(directOverridden) ?: return null
|
this.unwrapIntersectionOverride(directOverridden) ?: return null
|
||||||
|
|
||||||
@@ -117,7 +116,6 @@ internal class DelegatedMemberGenerator(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun <S : FirCallableSymbol<*>> S.unwrapIntersectionOverride(directOverridden: S.() -> List<S>): S? {
|
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 }
|
if (this.fir.isIntersectionOverride) return directOverridden().firstOrNull { it.fir.delegatedWrapperData != null }
|
||||||
return this
|
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.scopes.unsubstitutedScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
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.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
@@ -130,7 +129,7 @@ class FakeOverrideGenerator(
|
|||||||
return result
|
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<*>,
|
klass: FirClass<*>,
|
||||||
irClass: IrClass,
|
irClass: IrClass,
|
||||||
isLocal: Boolean,
|
isLocal: Boolean,
|
||||||
@@ -144,7 +143,7 @@ class FakeOverrideGenerator(
|
|||||||
realDeclarationSymbols: Set<AbstractFirBasedSymbol<*>>,
|
realDeclarationSymbols: Set<AbstractFirBasedSymbol<*>>,
|
||||||
computeDirectOverridden: FirTypeScope.(S) -> List<S>,
|
computeDirectOverridden: FirTypeScope.(S) -> List<S>,
|
||||||
scope: FirTypeScope,
|
scope: FirTypeScope,
|
||||||
) where S : FirCallableSymbol<D>, S : PossiblyFirFakeOverrideSymbol<D, S> {
|
) {
|
||||||
if (originalSymbol !is S || originalSymbol in realDeclarationSymbols) return
|
if (originalSymbol !is S || originalSymbol in realDeclarationSymbols) return
|
||||||
val classLookupTag = klass.symbol.toLookupTag()
|
val classLookupTag = klass.symbol.toLookupTag()
|
||||||
val originalDeclaration = originalSymbol.fir
|
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,
|
symbol: S,
|
||||||
basedSymbol: S,
|
basedSymbol: S,
|
||||||
directOverridden: FirTypeScope.(S) -> List<S>,
|
directOverridden: FirTypeScope.(S) -> List<S>,
|
||||||
@@ -199,7 +198,7 @@ class FakeOverrideGenerator(
|
|||||||
if (symbol.fir.origin != FirDeclarationOrigin.IntersectionOverride) return listOf(basedSymbol)
|
if (symbol.fir.origin != FirDeclarationOrigin.IntersectionOverride) return listOf(basedSymbol)
|
||||||
return scope.directOverridden(symbol).map {
|
return scope.directOverridden(symbol).map {
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
if (it is PossiblyFirFakeOverrideSymbol<*, *> && it.fir.isSubstitutionOverride && it.dispatchReceiverClassOrNull() == containingClass)
|
if (it.fir.isSubstitutionOverride && it.dispatchReceiverClassOrNull() == containingClass)
|
||||||
it.originalForSubstitutionOverride!!
|
it.originalForSubstitutionOverride!!
|
||||||
else
|
else
|
||||||
it
|
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.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.AccessorSymbol
|
import org.jetbrains.kotlin.fir.symbols.AccessorSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
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.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -24,7 +23,7 @@ sealed class FirFunctionSymbol<D : FirFunction<D>>(
|
|||||||
|
|
||||||
open class FirNamedFunctionSymbol(
|
open class FirNamedFunctionSymbol(
|
||||||
callableId: CallableId,
|
callableId: CallableId,
|
||||||
) : FirFunctionSymbol<FirSimpleFunction>(callableId), PossiblyFirFakeOverrideSymbol<FirSimpleFunction, FirNamedFunctionSymbol>
|
) : FirFunctionSymbol<FirSimpleFunction>(callableId)
|
||||||
|
|
||||||
class FirConstructorSymbol(
|
class FirConstructorSymbol(
|
||||||
callableId: CallableId
|
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.diagnostics.ConeDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
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.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@@ -23,7 +22,7 @@ open class FirVariableSymbol<D : FirVariable<D>>(override val callableId: Callab
|
|||||||
|
|
||||||
open class FirPropertySymbol(
|
open class FirPropertySymbol(
|
||||||
callableId: CallableId,
|
callableId: CallableId,
|
||||||
) : FirVariableSymbol<FirProperty>(callableId), PossiblyFirFakeOverrideSymbol<FirProperty, FirPropertySymbol> {
|
) : FirVariableSymbol<FirProperty>(callableId) {
|
||||||
// TODO: should we use this constructor for local variables?
|
// TODO: should we use this constructor for local variables?
|
||||||
constructor(name: Name) : this(CallableId(name))
|
constructor(name: Name) : this(CallableId(name))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user