[FIR] Provide implementation of ExpectActualMatchingContext for FIR
^KT-58578
This commit is contained in:
committed by
Space Team
parent
8338370fbd
commit
b19116d3af
@@ -17,9 +17,10 @@ import org.jetbrains.kotlin.fir.expressions.arguments
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.coneType
|
||||
import org.jetbrains.kotlin.mpp.DeclarationSymbolMarker
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
abstract class FirBasedSymbol<E : FirDeclaration> {
|
||||
abstract class FirBasedSymbol<E : FirDeclaration> : DeclarationSymbolMarker {
|
||||
private var _fir: E? = null
|
||||
|
||||
@SymbolInternals
|
||||
|
||||
@@ -10,10 +10,11 @@ import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.mpp.CallableSymbolMarker
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>() {
|
||||
abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>(), CallableSymbolMarker {
|
||||
abstract val callableId: CallableId
|
||||
|
||||
val resolvedReturnTypeRef: FirResolvedTypeRef
|
||||
|
||||
@@ -15,13 +15,16 @@ import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.coneType
|
||||
import org.jetbrains.kotlin.fir.types.toLookupTag
|
||||
import org.jetbrains.kotlin.mpp.ClassLikeSymbolMarker
|
||||
import org.jetbrains.kotlin.mpp.RegularClassSymbolMarker
|
||||
import org.jetbrains.kotlin.mpp.TypeAliasSymbolMarker
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
|
||||
sealed class FirClassLikeSymbol<D : FirClassLikeDeclaration>(
|
||||
val classId: ClassId,
|
||||
) : FirClassifierSymbol<D>() {
|
||||
) : FirClassifierSymbol<D>(), ClassLikeSymbolMarker {
|
||||
abstract override fun toLookupTag(): ConeClassLikeLookupTag
|
||||
|
||||
val name get() = classId.shortClassName
|
||||
@@ -68,7 +71,7 @@ sealed class FirClassSymbol<C : FirClass>(classId: ClassId) : FirClassLikeSymbol
|
||||
get() = fir.classKind
|
||||
}
|
||||
|
||||
class FirRegularClassSymbol(classId: ClassId) : FirClassSymbol<FirRegularClass>(classId) {
|
||||
class FirRegularClassSymbol(classId: ClassId) : FirClassSymbol<FirRegularClass>(classId), RegularClassSymbolMarker {
|
||||
val companionObjectSymbol: FirRegularClassSymbol?
|
||||
get() = fir.companionObjectSymbol
|
||||
|
||||
@@ -84,7 +87,7 @@ val ANONYMOUS_CLASS_ID = ClassId(FqName.ROOT, FqName.topLevel(SpecialNames.ANONY
|
||||
|
||||
class FirAnonymousObjectSymbol : FirClassSymbol<FirAnonymousObject>(ANONYMOUS_CLASS_ID)
|
||||
|
||||
class FirTypeAliasSymbol(classId: ClassId) : FirClassLikeSymbol<FirTypeAlias>(classId) {
|
||||
class FirTypeAliasSymbol(classId: ClassId) : FirClassLikeSymbol<FirTypeAlias>(classId), TypeAliasSymbolMarker {
|
||||
override fun toLookupTag(): ConeClassLikeLookupTag = classId.toLookupTag()
|
||||
|
||||
val resolvedExpandedTypeRef: FirResolvedTypeRef
|
||||
|
||||
@@ -8,7 +8,8 @@ package org.jetbrains.kotlin.fir.symbols.impl
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassifierLookupTag
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.mpp.ClassifierSymbolMarker
|
||||
|
||||
sealed class FirClassifierSymbol<E : FirDeclaration> : FirBasedSymbol<E>() {
|
||||
sealed class FirClassifierSymbol<E : FirDeclaration> : FirBasedSymbol<E>(), ClassifierSymbolMarker {
|
||||
abstract fun toLookupTag(): ConeClassifierLookupTag
|
||||
}
|
||||
|
||||
@@ -12,9 +12,12 @@ import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.references.toResolvedConstructorSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.mpp.ConstructorSymbolMarker
|
||||
import org.jetbrains.kotlin.mpp.FunctionSymbolMarker
|
||||
import org.jetbrains.kotlin.mpp.SimpleFunctionSymbolMarker
|
||||
import org.jetbrains.kotlin.name.*
|
||||
|
||||
sealed class FirFunctionSymbol<D : FirFunction>(override val callableId: CallableId) : FirCallableSymbol<D>() {
|
||||
sealed class FirFunctionSymbol<D : FirFunction>(override val callableId: CallableId) : FirCallableSymbol<D>(), FunctionSymbolMarker {
|
||||
val valueParameterSymbols: List<FirValueParameterSymbol>
|
||||
get() = fir.valueParameters.map { it.symbol }
|
||||
|
||||
@@ -37,7 +40,7 @@ sealed class FirFunctionSymbol<D : FirFunction>(override val callableId: Callabl
|
||||
|
||||
// ------------------------ named ------------------------
|
||||
|
||||
open class FirNamedFunctionSymbol(callableId: CallableId) : FirFunctionSymbol<FirSimpleFunction>(callableId)
|
||||
open class FirNamedFunctionSymbol(callableId: CallableId) : FirFunctionSymbol<FirSimpleFunction>(callableId), SimpleFunctionSymbolMarker
|
||||
|
||||
interface FirIntersectionCallableSymbol {
|
||||
val intersections: Collection<FirCallableSymbol<*>>
|
||||
@@ -48,7 +51,7 @@ class FirIntersectionOverrideFunctionSymbol(
|
||||
override val intersections: Collection<FirCallableSymbol<*>>,
|
||||
) : FirNamedFunctionSymbol(callableId), FirIntersectionCallableSymbol
|
||||
|
||||
class FirConstructorSymbol(callableId: CallableId) : FirFunctionSymbol<FirConstructor>(callableId) {
|
||||
class FirConstructorSymbol(callableId: CallableId) : FirFunctionSymbol<FirConstructor>(callableId), ConstructorSymbolMarker {
|
||||
constructor(classId: ClassId) : this(classId.callableIdForConstructor())
|
||||
|
||||
val isPrimary: Boolean
|
||||
|
||||
+2
-1
@@ -11,10 +11,11 @@ import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.mpp.TypeParameterSymbolMarker
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
|
||||
class FirTypeParameterSymbol : FirClassifierSymbol<FirTypeParameter>() {
|
||||
class FirTypeParameterSymbol : FirClassifierSymbol<FirTypeParameter>(), TypeParameterSymbolMarker {
|
||||
val name: Name
|
||||
get() = fir.name
|
||||
|
||||
|
||||
@@ -11,15 +11,15 @@ import org.jetbrains.kotlin.fir.expressions.FirAnonymousObjectExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.mpp.PropertySymbolMarker
|
||||
import org.jetbrains.kotlin.mpp.ValueParameterSymbolMarker
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
sealed class FirVariableSymbol<E : FirVariable>(override val callableId: CallableId) : FirCallableSymbol<E>()
|
||||
|
||||
open class FirPropertySymbol(
|
||||
callableId: CallableId,
|
||||
) : FirVariableSymbol<FirProperty>(callableId) {
|
||||
open class FirPropertySymbol(callableId: CallableId, ) : FirVariableSymbol<FirProperty>(callableId), PropertySymbolMarker {
|
||||
// TODO: should we use this constructor for local variables?
|
||||
constructor(name: Name) : this(CallableId(name))
|
||||
|
||||
@@ -108,7 +108,7 @@ class FirEnumEntrySymbol(callableId: CallableId) : FirVariableSymbol<FirEnumEntr
|
||||
get() = (fir.initializer as? FirAnonymousObjectExpression)?.anonymousObject?.symbol
|
||||
}
|
||||
|
||||
class FirValueParameterSymbol(name: Name) : FirVariableSymbol<FirValueParameter>(CallableId(name)) {
|
||||
class FirValueParameterSymbol(name: Name) : FirVariableSymbol<FirValueParameter>(CallableId(name)), ValueParameterSymbolMarker {
|
||||
val hasDefaultValue: Boolean
|
||||
get() = fir.defaultValue != null
|
||||
|
||||
|
||||
Reference in New Issue
Block a user