FIR: add error message when FirBasedSymbol.fir is not initialized
This commit is contained in:
committed by
TeamCityServer
parent
69ff45971f
commit
0051451ed7
+1
-1
@@ -139,7 +139,7 @@ class FirMetadataSerializer(
|
|||||||
annotations += property.annotations
|
annotations += property.annotations
|
||||||
typeParameters += typeParameterSet
|
typeParameters += typeParameterSet
|
||||||
}.apply {
|
}.apply {
|
||||||
delegateFieldSymbol?.fir = this
|
delegateFieldSymbol?.bind(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,10 +9,13 @@ import org.jetbrains.kotlin.fir.FirSymbolOwner
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
|
|
||||||
abstract class AbstractFirBasedSymbol<E> : FirBasedSymbol<E> where E : FirSymbolOwner<E>, E : FirDeclaration {
|
abstract class AbstractFirBasedSymbol<E> : FirBasedSymbol<E> where E : FirSymbolOwner<E>, E : FirDeclaration {
|
||||||
|
private var _fir: E? = null
|
||||||
|
|
||||||
override lateinit var fir: E
|
override val fir: E
|
||||||
|
get() = _fir
|
||||||
|
?: error("Fir is not initialized for $this")
|
||||||
|
|
||||||
override fun bind(e: E) {
|
override fun bind(e: E) {
|
||||||
fir = e
|
_fir = e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+3
-1
@@ -8,4 +8,6 @@ package org.jetbrains.kotlin.fir.symbols.impl
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||||
|
|
||||||
class FirAnonymousInitializerSymbol : AbstractFirBasedSymbol<FirAnonymousInitializer>()
|
class FirAnonymousInitializerSymbol : AbstractFirBasedSymbol<FirAnonymousInitializer>() {
|
||||||
|
override fun toString(): String = "${this::class.simpleName} <init>"
|
||||||
|
}
|
||||||
@@ -14,6 +14,8 @@ import org.jetbrains.kotlin.name.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
|
||||||
|
|
||||||
|
override fun toString(): String = "${this::class.simpleName} $callableId"
|
||||||
}
|
}
|
||||||
|
|
||||||
val FirCallableSymbol<*>.isStatic: Boolean get() = (fir as? FirMemberDeclaration)?.status?.isStatic == true
|
val FirCallableSymbol<*>.isStatic: Boolean get() = (fir as? FirMemberDeclaration)?.status?.isStatic == true
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ sealed class FirClassLikeSymbol<D>(
|
|||||||
val classId: ClassId
|
val classId: ClassId
|
||||||
) : FirClassifierSymbol<D>() where D : FirClassLikeDeclaration<D>, D : FirSymbolOwner<D> {
|
) : FirClassifierSymbol<D>() where D : FirClassLikeDeclaration<D>, D : FirSymbolOwner<D> {
|
||||||
abstract override fun toLookupTag(): ConeClassLikeLookupTag
|
abstract override fun toLookupTag(): ConeClassLikeLookupTag
|
||||||
|
|
||||||
|
override fun toString(): String = "${this::class.simpleName} ${classId.asString()}"
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class FirClassSymbol<C : FirClass<C>>(classId: ClassId) : FirClassLikeSymbol<C>(classId) {
|
sealed class FirClassSymbol<C : FirClass<C>>(classId: ClassId) : FirClassLikeSymbol<C>(classId) {
|
||||||
|
|||||||
@@ -17,5 +17,7 @@ class FirTypeParameterSymbol : FirClassifierSymbol<FirTypeParameter>() {
|
|||||||
private val lookupTag = ConeTypeParameterLookupTag(this)
|
private val lookupTag = ConeTypeParameterLookupTag(this)
|
||||||
|
|
||||||
override fun toLookupTag(): ConeTypeParameterLookupTag = lookupTag
|
override fun toLookupTag(): ConeTypeParameterLookupTag = lookupTag
|
||||||
|
|
||||||
|
override fun toString(): String = "${this::class.simpleName} ${name.asString()}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user