FirProvider: search for fake overridden symbol containing file correctly
This commit is contained in:
@@ -23,13 +23,15 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
|||||||
import org.jetbrains.kotlin.fir.types.ConeLookupTagBasedType
|
import org.jetbrains.kotlin.fir.types.ConeLookupTagBasedType
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitorVoid
|
import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitorVoid
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class FirProviderImpl(val session: FirSession) : FirProvider() {
|
class FirProviderImpl(val session: FirSession) : FirProvider() {
|
||||||
override fun getFirCallableContainerFile(symbol: FirCallableSymbol<*>): FirFile? {
|
override fun getFirCallableContainerFile(symbol: FirCallableSymbol<*>): FirFile? {
|
||||||
|
symbol.overriddenSymbol?.let {
|
||||||
|
return getFirCallableContainerFile(it)
|
||||||
|
}
|
||||||
return state.callableContainerMap[symbol]
|
return state.callableContainerMap[symbol]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -8,8 +8,8 @@ FILE: problems2.kt
|
|||||||
^find Null(null)
|
^find Null(null)
|
||||||
}
|
}
|
||||||
|
|
||||||
public final fun intern(obj: R|T|): <ERROR TYPE REF: Inapplicable(HIDDEN): [/Interner.find]> {
|
public final fun intern(obj: R|T|): R|kotlin/Int?| {
|
||||||
^intern <Inapplicable(HIDDEN): [/Interner.find]>#(R|<local>/obj|)
|
^intern this@R|/Interner|.R|FakeOverride</Interner.find: R|kotlin/Int?|>|(R|<local>/obj|)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,4 +11,7 @@ import org.jetbrains.kotlin.fir.symbols.CallableId
|
|||||||
|
|
||||||
abstract class FirCallableSymbol<D : FirCallableDeclaration<D>> : AbstractFirBasedSymbol<D>() {
|
abstract class FirCallableSymbol<D : FirCallableDeclaration<D>> : AbstractFirBasedSymbol<D>() {
|
||||||
abstract val callableId: CallableId
|
abstract val callableId: CallableId
|
||||||
|
|
||||||
|
open val overriddenSymbol: FirCallableSymbol<D>?
|
||||||
|
get() = null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ open class FirNamedFunctionSymbol(
|
|||||||
callableId: CallableId,
|
callableId: CallableId,
|
||||||
val isFakeOverride: Boolean = false,
|
val isFakeOverride: Boolean = false,
|
||||||
// Actual for fake override only
|
// Actual for fake override only
|
||||||
val overriddenSymbol: FirNamedFunctionSymbol? = null
|
override val overriddenSymbol: FirNamedFunctionSymbol? = null
|
||||||
) : FirFunctionSymbol<FirNamedFunction>(callableId)
|
) : FirFunctionSymbol<FirNamedFunction>(callableId)
|
||||||
|
|
||||||
class FirConstructorSymbol(
|
class FirConstructorSymbol(
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ open class FirPropertySymbol(
|
|||||||
callableId: CallableId,
|
callableId: CallableId,
|
||||||
val isFakeOverride: Boolean = false,
|
val isFakeOverride: Boolean = false,
|
||||||
// Actual for fake override only
|
// Actual for fake override only
|
||||||
val overriddenSymbol: FirPropertySymbol? = null
|
override val overriddenSymbol: FirPropertySymbol? = null
|
||||||
) : FirVariableSymbol<FirProperty>(callableId)
|
) : FirVariableSymbol<FirProperty>(callableId)
|
||||||
|
|
||||||
class FirBackingFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirProperty>(callableId)
|
class FirBackingFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirProperty>(callableId)
|
||||||
|
|||||||
Reference in New Issue
Block a user