[Interop][Lowering] A bit more helpful error reporting
This commit is contained in:
committed by
Sergey Bogolepov
parent
ba52a437b1
commit
de9f1bf2bf
+4
-3
@@ -97,13 +97,13 @@ private fun InteropCallContext.findMemoryAccessFunction(isRead: Boolean, valueTy
|
|||||||
.findAnnotation(RuntimeNames.typedIntrinsicAnnotation)
|
.findAnnotation(RuntimeNames.typedIntrinsicAnnotation)
|
||||||
?.getAnnotationStringValue()
|
?.getAnnotationStringValue()
|
||||||
annotationArgument == requiredType.name
|
annotationArgument == requiredType.name
|
||||||
}.first {
|
}.firstOrNull {
|
||||||
if (isRead) {
|
if (isRead) {
|
||||||
it.returnType.classOrNull == valueType.classOrNull
|
it.returnType.classOrNull == valueType.classOrNull
|
||||||
} else {
|
} else {
|
||||||
it.valueParameters.last().type.classOrNull == valueType.classOrNull
|
it.valueParameters.last().type.classOrNull == valueType.classOrNull
|
||||||
}
|
}
|
||||||
}
|
} ?: error("No memory access function for ${valueType.classOrNull?.owner?.name}")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun InteropCallContext.readValueFromMemory(
|
private fun InteropCallContext.readValueFromMemory(
|
||||||
@@ -164,7 +164,8 @@ private fun InteropCallContext.castPrimitiveIfNeeded(
|
|||||||
targetClass == irBuiltIns.booleanClass -> castToBoolean(sourceClass, value)
|
targetClass == irBuiltIns.booleanClass -> castToBoolean(sourceClass, value)
|
||||||
sourceClass == irBuiltIns.booleanClass -> castFromBoolean(targetClass, value)
|
sourceClass == irBuiltIns.booleanClass -> castFromBoolean(targetClass, value)
|
||||||
else -> {
|
else -> {
|
||||||
val conversion = symbols.integerConversions.getValue(sourceClass to targetClass)
|
val conversion = symbols.integerConversions[sourceClass to targetClass]
|
||||||
|
?: error("There is no conversion from ${sourceClass.owner.name} to ${targetClass.owner.name}")
|
||||||
builder.irCall(conversion.owner).apply {
|
builder.irCall(conversion.owner).apply {
|
||||||
if (conversion.owner.dispatchReceiverParameter != null) {
|
if (conversion.owner.dispatchReceiverParameter != null) {
|
||||||
dispatchReceiver = value
|
dispatchReceiver = value
|
||||||
|
|||||||
Reference in New Issue
Block a user