[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.symbols.impl.FirClassSymbol
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.utils.exceptions.withConeTypeEntry
|
||||
import org.jetbrains.kotlin.name.*
|
||||
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
|
||||
import org.jetbrains.kotlin.resolve.jvm.KotlinFinderMarker
|
||||
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||
|
||||
class FirJavaElementFinder(
|
||||
private val session: FirSession,
|
||||
@@ -267,7 +269,9 @@ private fun ConeKotlinType.mapToCanonicalString(session: FirSession): String {
|
||||
is ConeClassLikeType -> mapToCanonicalString(session)
|
||||
is ConeTypeVariableType, is ConeFlexibleType, is ConeCapturedType,
|
||||
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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.jvm.FirJavaTypeRef
|
||||
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.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||
|
||||
private fun ClassId.toConeFlexibleType(
|
||||
typeArguments: Array<out ConeTypeProjection>,
|
||||
@@ -158,7 +160,9 @@ private fun JavaType?.toConeTypeProjection(
|
||||
}
|
||||
|
||||
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.ConeTypeParameterTypeImpl
|
||||
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.FakePureImplementationsProvider
|
||||
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.TypeParameterMarker
|
||||
import org.jetbrains.kotlin.types.model.TypeSystemContext
|
||||
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||
import org.jetbrains.kotlin.util.PrivateForInline
|
||||
|
||||
class FirSignatureEnhancement(
|
||||
@@ -182,7 +185,9 @@ class FirSignatureEnhancement(
|
||||
}
|
||||
else -> {
|
||||
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()
|
||||
}
|
||||
}
|
||||
else -> throw AssertionError("Unknown Java method to enhance: ${firMethod.render()}")
|
||||
else -> errorWithAttachment("Unknown Java method to enhance: ${firMethod::class.java}") {
|
||||
withFirEntry("firMethod", firMethod)
|
||||
}
|
||||
}.apply {
|
||||
val newValueParameters = firMethod.valueParameters.zip(enhancedValueParameterTypes) { valueParameter, 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.inference.InferenceComponents
|
||||
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.TypeSpecificityComparator
|
||||
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||
|
||||
// This conflict resolver filters JVM equivalent top-level functions
|
||||
// like emptyArray() from intrinsics and built-ins
|
||||
@@ -103,7 +105,9 @@ class ConeEquivalentCallConflictResolver(
|
||||
is FirSimpleFunction -> createFlatSignature(call, declaration)
|
||||
is FirConstructor -> 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