[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.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
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(
|
fun Visibility.toEffectiveVisibility(
|
||||||
ownerSymbol: FirClassLikeSymbol<*>?,
|
ownerSymbol: FirClassLikeSymbol<*>?,
|
||||||
@@ -35,6 +37,8 @@ fun Visibility.toEffectiveVisibility(
|
|||||||
}
|
}
|
||||||
Visibilities.Public -> EffectiveVisibility.Public
|
Visibilities.Public -> EffectiveVisibility.Public
|
||||||
Visibilities.Local -> EffectiveVisibility.Local
|
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.persistentListOf
|
||||||
import kotlinx.collections.immutable.toPersistentList
|
import kotlinx.collections.immutable.toPersistentList
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
|
||||||
import org.jetbrains.kotlin.fir.labelName
|
import org.jetbrains.kotlin.fir.labelName
|
||||||
import org.jetbrains.kotlin.fir.resolve.*
|
import org.jetbrains.kotlin.fir.resolve.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.*
|
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.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.fir.types.ConeStubType
|
import org.jetbrains.kotlin.fir.types.ConeStubType
|
||||||
import org.jetbrains.kotlin.fir.types.coneType
|
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.name.Name
|
||||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||||
|
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||||
|
|
||||||
fun SessionHolder.collectImplicitReceivers(
|
fun SessionHolder.collectImplicitReceivers(
|
||||||
type: ConeKotlinType?,
|
type: ConeKotlinType?,
|
||||||
@@ -281,10 +282,12 @@ class FirTowerDataElement(
|
|||||||
private fun ImplicitReceiverValue<*>.getImplicitScope(
|
private fun ImplicitReceiverValue<*>.getImplicitScope(
|
||||||
processTypeScope: FirTypeScope.(ConeKotlinType) -> FirTypeScope,
|
processTypeScope: FirTypeScope.(ConeKotlinType) -> FirTypeScope,
|
||||||
): FirScope {
|
): FirScope {
|
||||||
return when (type.fullyExpandedType(useSiteSession)) {
|
return when (val type = type.fullyExpandedType(useSiteSession)) {
|
||||||
is ConeErrorType,
|
is ConeErrorType,
|
||||||
is ConeStubType -> FirTypeScope.Empty
|
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