From bd87332b0c56c0f76cd37d074de82ad13e6047c7 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 29 May 2019 00:00:32 +0300 Subject: [PATCH] Fix compiler errors in compiler detected after enabling @OnlyInputTypes in NI --- .../resolve/calls/DiagnosticReporterByTrackingStrategy.kt | 2 +- .../kotlin/backend/common/lower/EnumWhenLowering.kt | 2 +- .../ir/backend/js/lower/coroutines/StateMachineBuilder.kt | 2 +- .../backend/jvm/lower/AdditionalClassAnnotationLowering.kt | 6 +++++- .../kotlin/backend/jvm/lower/PropertyReferenceLowering.kt | 2 +- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt index 09ffcd21a2d..990316cd636 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/DiagnosticReporterByTrackingStrategy.kt @@ -238,7 +238,7 @@ class DiagnosticReporterByTrackingStrategy( argument?.let { it.safeAs()?.let lambda@{ lambda -> val parameterTypes = lambda.parametersTypes?.toList() ?: return@lambda - val index = parameterTypes.indexOf(constraintError.upperType) + val index = parameterTypes.indexOf(constraintError.upperKotlinType.unwrap()) val lambdaExpression = lambda.psiExpression as? KtLambdaExpression ?: return@lambda val parameter = lambdaExpression.valueParameters.getOrNull(index) ?: return@lambda trace.report(Errors.EXPECTED_PARAMETER_TYPE_MISMATCH.on(parameter, constraintError.upperKotlinType.unCapture())) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/EnumWhenLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/EnumWhenLowering.kt index 78b28b34788..2f33595e91d 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/EnumWhenLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/EnumWhenLowering.kt @@ -26,7 +26,7 @@ open class EnumWhenLowering(protected val context: CommonBackendContext) : IrEle private val subjectWithOrdinalStack = mutableListOf>>() protected open fun mapConstEnumEntry(entry: IrEnumEntry): Int = - entry.parentAsClass.declarations.filterIsInstance().indexOf(this).also { + entry.parentAsClass.declarations.filterIsInstance().indexOf(this as IrEnumEntry).also { assert(it >= 0) { "enum entry ${entry.dump()} not in parent class" } } diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/StateMachineBuilder.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/StateMachineBuilder.kt index 50b38bc505a..4131a386363 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/StateMachineBuilder.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/coroutines/StateMachineBuilder.kt @@ -427,7 +427,7 @@ class StateMachineBuilder( private fun transformArguments(arguments: Array): Array { - var suspendableCount = arguments.fold(0) { r, n -> if (n in suspendableNodes) r + 1 else r } + var suspendableCount = arguments.fold(0) { r, n -> if (n != null && n in suspendableNodes) r + 1 else r } val newArguments = arrayOfNulls(arguments.size) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt index 54646404929..6774a5cdbfd 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AdditionalClassAnnotationLowering.kt @@ -157,7 +157,11 @@ private class AdditionalClassAnnotationLowering(private val context: JvmBackendC private fun generateRetentionAnnotation(irClass: IrClass) { if (irClass.hasAnnotation(FqName("java.lang.annotation.Retention"))) return val kotlinRetentionPolicy = irClass.getAnnotation(FqName("kotlin.annotation.Retention")) - val javaRetentionPolicy = annotationRetentionMap[kotlinRetentionPolicy] ?: rpRuntime + val javaRetentionPolicy = if (kotlinRetentionPolicy is KotlinRetention) { + annotationRetentionMap[kotlinRetentionPolicy] ?: rpRuntime + } else { + rpRuntime + } irClass.annotations.add( IrConstructorCallImpl.fromSymbolOwner( diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt index 3a6039f9e55..937b2ecd5f4 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt @@ -62,7 +62,7 @@ internal class PropertyReferenceLowering(val context: JvmBackendContext) : Class get() = "${JvmAbi.getterName(name.asString())}()${context.state.typeMapper.mapReturnType(descriptor)}" private val IrMemberAccessExpression.signature: String - get() = localPropertyIndices[getter]?.let { "" } ?: getter?.owner?.signature ?: field!!.owner.signature + get() = getter?.let { getter -> localPropertyIndices[getter]?.let { "" } } ?: getter?.owner?.signature ?: field!!.owner.signature private val IrMemberAccessExpression.symbol: IrSymbol get() = getter?.owner?.symbol ?: field!!.owner.symbol