Introduce FirDeclarationOrigin.INTERSECTION_OVERRIDE

This commit is contained in:
Mikhail Glukhikh
2020-07-14 19:13:18 +03:00
parent 9107944b05
commit 031f03a903
3 changed files with 4 additions and 0 deletions
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.scopes.impl
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
@@ -100,6 +101,7 @@ class FirTypeIntersectionScope private constructor(
val mostSpecificFunction = mostSpecific.fir
createFunctionCopy(mostSpecific.fir, newSymbol).apply {
resolvePhase = mostSpecificFunction.resolvePhase
origin = FirDeclarationOrigin.IntersectionOverride
typeParameters += mostSpecificFunction.typeParameters
valueParameters += mostSpecificFunction.valueParameters.mapIndexed { index, mostSpecificParameter ->
val overriddenWithDefault =
@@ -14,6 +14,7 @@ sealed class FirDeclarationOrigin {
object FakeOverride : FirDeclarationOrigin()
object Enhancement : FirDeclarationOrigin()
object ImportedFromObject : FirDeclarationOrigin()
object IntersectionOverride : FirDeclarationOrigin()
class Plugin(val key: FirPluginKey) : FirDeclarationOrigin()
}
@@ -25,6 +25,7 @@ private fun FirDeclarationOrigin.asKtSymbolOrigin() = when (this) {
FirDeclarationOrigin.Synthetic -> throw InvalidFirDeclarationOriginForSymbol(this)
FirDeclarationOrigin.FakeOverride -> throw InvalidFirDeclarationOriginForSymbol(this)
FirDeclarationOrigin.ImportedFromObject -> throw InvalidFirDeclarationOriginForSymbol(this)
FirDeclarationOrigin.IntersectionOverride -> throw InvalidFirDeclarationOriginForSymbol(this)
FirDeclarationOrigin.Enhancement -> throw InvalidFirDeclarationOriginForSymbol(this)
is FirDeclarationOrigin.Plugin -> throw InvalidFirDeclarationOriginForSymbol(this)
}