diff --git a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/EffectiveVisibilityUtils.kt b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/EffectiveVisibilityUtils.kt index cd2539947e3..b533ef7c79a 100644 --- a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/EffectiveVisibilityUtils.kt +++ b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/EffectiveVisibilityUtils.kt @@ -10,6 +10,8 @@ import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol +import org.jetbrains.kotlin.fir.utils.exceptions.withFirLookupTagEntry +import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment fun Visibility.toEffectiveVisibility( ownerSymbol: FirClassLikeSymbol<*>?, @@ -35,6 +37,8 @@ fun Visibility.toEffectiveVisibility( } Visibilities.Public -> EffectiveVisibility.Public Visibilities.Local -> EffectiveVisibility.Local - else -> error("Unknown visibility: $this") + else -> errorWithAttachment("Unknown visibility: $this") { + withFirLookupTagEntry("owner", owner) + } } } diff --git a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/declarations/ImplicitReceiverUtils.kt b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/declarations/ImplicitReceiverUtils.kt index a7081ba5319..1929ba6f545 100644 --- a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/declarations/ImplicitReceiverUtils.kt +++ b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/declarations/ImplicitReceiverUtils.kt @@ -9,7 +9,6 @@ import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toPersistentList import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.labelName import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.resolve.calls.* @@ -23,8 +22,10 @@ import org.jetbrains.kotlin.fir.types.ConeErrorType import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.ConeStubType import org.jetbrains.kotlin.fir.types.coneType +import org.jetbrains.kotlin.fir.utils.exceptions.withConeTypeEntry import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.utils.addIfNotNull +import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment fun SessionHolder.collectImplicitReceivers( type: ConeKotlinType?, @@ -281,10 +282,12 @@ class FirTowerDataElement( private fun ImplicitReceiverValue<*>.getImplicitScope( processTypeScope: FirTypeScope.(ConeKotlinType) -> FirTypeScope, ): FirScope { - return when (type.fullyExpandedType(useSiteSession)) { + return when (val type = type.fullyExpandedType(useSiteSession)) { is ConeErrorType, is ConeStubType -> FirTypeScope.Empty - else -> implicitScope?.processTypeScope(type) ?: error("Scope for type ${type::class.simpleName} is null.") + else -> implicitScope?.processTypeScope(type) ?: errorWithAttachment("Scope for type ${type::class.simpleName} is null") { + withConeTypeEntry("type", type) + } } } }