[FIR] remove user code leaks from compiler.fir.semantics module, add more information to some errors

This commit is contained in:
Ilya Kirillov
2023-07-04 12:32:40 +02:00
committed by Space Team
parent b5394d79b9
commit df0662459b
2 changed files with 11 additions and 4 deletions
@@ -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)
}
}
}
@@ -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)
}
}
}
}