[FIR] remove user code leaks from compiler.fir.semantics module, add more information to some errors
This commit is contained in:
committed by
Space Team
parent
b5394d79b9
commit
df0662459b
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-3
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user