[FIR] remove user code leaks from compiler.fir.java module, add more information to some errors
This commit is contained in:
committed by
Space Team
parent
e6c8bf6644
commit
743662ec7f
@@ -39,9 +39,11 @@ import org.jetbrains.kotlin.fir.resolve.transformers.FirSupertypeResolverVisitor
|
|||||||
import org.jetbrains.kotlin.fir.resolve.transformers.SupertypeComputationSession
|
import org.jetbrains.kotlin.fir.resolve.transformers.SupertypeComputationSession
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
|
import org.jetbrains.kotlin.fir.utils.exceptions.withConeTypeEntry
|
||||||
import org.jetbrains.kotlin.name.*
|
import org.jetbrains.kotlin.name.*
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
|
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
|
||||||
import org.jetbrains.kotlin.resolve.jvm.KotlinFinderMarker
|
import org.jetbrains.kotlin.resolve.jvm.KotlinFinderMarker
|
||||||
|
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||||
|
|
||||||
class FirJavaElementFinder(
|
class FirJavaElementFinder(
|
||||||
private val session: FirSession,
|
private val session: FirSession,
|
||||||
@@ -267,7 +269,9 @@ private fun ConeKotlinType.mapToCanonicalString(session: FirSession): String {
|
|||||||
is ConeClassLikeType -> mapToCanonicalString(session)
|
is ConeClassLikeType -> mapToCanonicalString(session)
|
||||||
is ConeTypeVariableType, is ConeFlexibleType, is ConeCapturedType,
|
is ConeTypeVariableType, is ConeFlexibleType, is ConeCapturedType,
|
||||||
is ConeDefinitelyNotNullType, is ConeIntersectionType, is ConeStubType, is ConeIntegerLiteralType ->
|
is ConeDefinitelyNotNullType, is ConeIntersectionType, is ConeStubType, is ConeIntegerLiteralType ->
|
||||||
error("Unexpected type: $this [${this::class}]")
|
errorWithAttachment("Unexpected type: ${this::class.java}") {
|
||||||
|
withConeTypeEntry("type", this@mapToCanonicalString)
|
||||||
|
}
|
||||||
is ConeLookupTagBasedType -> lookupTag.name.asString()
|
is ConeLookupTagBasedType -> lookupTag.name.asString()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,11 +16,13 @@ import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
|
|||||||
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
|
||||||
import org.jetbrains.kotlin.fir.types.jvm.FirJavaTypeRef
|
import org.jetbrains.kotlin.fir.types.jvm.FirJavaTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.jvm.buildJavaTypeRef
|
import org.jetbrains.kotlin.fir.types.jvm.buildJavaTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.utils.exceptions.withConeTypeEntry
|
||||||
import org.jetbrains.kotlin.load.java.structure.*
|
import org.jetbrains.kotlin.load.java.structure.*
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.StandardClassIds
|
import org.jetbrains.kotlin.name.StandardClassIds
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
|
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||||
|
|
||||||
private fun ClassId.toConeFlexibleType(
|
private fun ClassId.toConeFlexibleType(
|
||||||
typeArguments: Array<out ConeTypeProjection>,
|
typeArguments: Array<out ConeTypeProjection>,
|
||||||
@@ -158,7 +160,9 @@ private fun JavaType?.toConeTypeProjection(
|
|||||||
}
|
}
|
||||||
|
|
||||||
null -> ConeStarProjection
|
null -> ConeStarProjection
|
||||||
else -> error("Strange JavaType: ${this::class.java}")
|
else -> errorWithAttachment("Strange JavaType: ${this::class.java}") {
|
||||||
|
withEntry("type", this@toConeTypeProjection) { it.toString() }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+9
-2
@@ -41,6 +41,8 @@ import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
|
|||||||
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
||||||
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
|
||||||
import org.jetbrains.kotlin.fir.types.jvm.FirJavaTypeRef
|
import org.jetbrains.kotlin.fir.types.jvm.FirJavaTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.utils.exceptions.withConeTypeEntry
|
||||||
|
import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry
|
||||||
import org.jetbrains.kotlin.load.java.AnnotationQualifierApplicabilityType
|
import org.jetbrains.kotlin.load.java.AnnotationQualifierApplicabilityType
|
||||||
import org.jetbrains.kotlin.load.java.FakePureImplementationsProvider
|
import org.jetbrains.kotlin.load.java.FakePureImplementationsProvider
|
||||||
import org.jetbrains.kotlin.load.java.JavaTypeQualifiersByElementType
|
import org.jetbrains.kotlin.load.java.JavaTypeQualifiersByElementType
|
||||||
@@ -52,6 +54,7 @@ import org.jetbrains.kotlin.types.AbstractTypeChecker
|
|||||||
import org.jetbrains.kotlin.types.model.KotlinTypeMarker
|
import org.jetbrains.kotlin.types.model.KotlinTypeMarker
|
||||||
import org.jetbrains.kotlin.types.model.TypeParameterMarker
|
import org.jetbrains.kotlin.types.model.TypeParameterMarker
|
||||||
import org.jetbrains.kotlin.types.model.TypeSystemContext
|
import org.jetbrains.kotlin.types.model.TypeSystemContext
|
||||||
|
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||||
import org.jetbrains.kotlin.util.PrivateForInline
|
import org.jetbrains.kotlin.util.PrivateForInline
|
||||||
|
|
||||||
class FirSignatureEnhancement(
|
class FirSignatureEnhancement(
|
||||||
@@ -182,7 +185,9 @@ class FirSignatureEnhancement(
|
|||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
if (original is FirPropertySymbol) return original
|
if (original is FirPropertySymbol) return original
|
||||||
error("Can't make enhancement for $original: `${firElement.render()}`")
|
errorWithAttachment("Can't make enhancement for ${original::class.java}") {
|
||||||
|
withFirEntry("firElement", firElement)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -353,7 +358,9 @@ class FirSignatureEnhancement(
|
|||||||
attributes = firMethod.attributes.copy()
|
attributes = firMethod.attributes.copy()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else -> throw AssertionError("Unknown Java method to enhance: ${firMethod.render()}")
|
else -> errorWithAttachment("Unknown Java method to enhance: ${firMethod::class.java}") {
|
||||||
|
withFirEntry("firMethod", firMethod)
|
||||||
|
}
|
||||||
}.apply {
|
}.apply {
|
||||||
val newValueParameters = firMethod.valueParameters.zip(enhancedValueParameterTypes) { valueParameter, enhancedReturnType ->
|
val newValueParameters = firMethod.valueParameters.zip(enhancedValueParameterTypes) { valueParameter, enhancedReturnType ->
|
||||||
valueParameter.defaultValue?.replaceTypeRef(enhancedReturnType)
|
valueParameter.defaultValue?.replaceTypeRef(enhancedReturnType)
|
||||||
|
|||||||
+5
-1
@@ -13,8 +13,10 @@ import org.jetbrains.kotlin.fir.resolve.calls.AbstractConeCallConflictResolver
|
|||||||
import org.jetbrains.kotlin.fir.resolve.calls.Candidate
|
import org.jetbrains.kotlin.fir.resolve.calls.Candidate
|
||||||
import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents
|
import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents
|
||||||
import org.jetbrains.kotlin.fir.types.coneType
|
import org.jetbrains.kotlin.fir.types.coneType
|
||||||
|
import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry
|
||||||
import org.jetbrains.kotlin.resolve.calls.results.FlatSignature
|
import org.jetbrains.kotlin.resolve.calls.results.FlatSignature
|
||||||
import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator
|
import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator
|
||||||
|
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||||
|
|
||||||
// This conflict resolver filters JVM equivalent top-level functions
|
// This conflict resolver filters JVM equivalent top-level functions
|
||||||
// like emptyArray() from intrinsics and built-ins
|
// like emptyArray() from intrinsics and built-ins
|
||||||
@@ -103,7 +105,9 @@ class ConeEquivalentCallConflictResolver(
|
|||||||
is FirSimpleFunction -> createFlatSignature(call, declaration)
|
is FirSimpleFunction -> createFlatSignature(call, declaration)
|
||||||
is FirConstructor -> createFlatSignature(call, declaration)
|
is FirConstructor -> createFlatSignature(call, declaration)
|
||||||
is FirVariable -> createFlatSignature(call, declaration)
|
is FirVariable -> createFlatSignature(call, declaration)
|
||||||
else -> error("Not supported: $declaration")
|
else -> errorWithAttachment("Not supported: ${this::class}") {
|
||||||
|
withFirEntry("declaration", declaration)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user