From e4683a1e9fae1111defcc399bdd9cceb52dde040 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Mon, 6 Mar 2017 16:17:59 +0300 Subject: [PATCH] KT-16666 IMPLICIT_INTEGER_COERCION expression should have non-nullable `type` --- .../kotlin/psi2ir/transformations/InsertImplicitCasts.kt | 2 +- .../ir/irText/expressions/primitivesImplicitConversions.txt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/transformations/InsertImplicitCasts.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/transformations/InsertImplicitCasts.kt index 7e16b7c6bac..fc41dbfb7aa 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/transformations/InsertImplicitCasts.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/transformations/InsertImplicitCasts.kt @@ -184,7 +184,7 @@ class InsertImplicitCasts(val builtIns: KotlinBuiltIns): IrElementTransformerVoi KotlinTypeChecker.DEFAULT.isSubtypeOf(valueType.makeNotNullable(), expectedType) -> this KotlinBuiltIns.isInt(valueType) && notNullableExpectedType.isBuiltInIntegerType() -> - IrTypeOperatorCallImpl(startOffset, endOffset, expectedType, + IrTypeOperatorCallImpl(startOffset, endOffset, notNullableExpectedType, IrTypeOperator.IMPLICIT_INTEGER_COERCION, notNullableExpectedType, this) else -> IrTypeOperatorCallImpl(startOffset, endOffset, expectedType, diff --git a/compiler/testData/ir/irText/expressions/primitivesImplicitConversions.txt b/compiler/testData/ir/irText/expressions/primitivesImplicitConversions.txt index 1c67af7d048..b6ec50e0b0f 100644 --- a/compiler/testData/ir/irText/expressions/primitivesImplicitConversions.txt +++ b/compiler/testData/ir/irText/expressions/primitivesImplicitConversions.txt @@ -64,15 +64,15 @@ FILE /primitivesImplicitConversions.kt VAR val test4: kotlin.Long? = -1.toLong() CONST Long type=kotlin.Long value='-1' VAR val test5: kotlin.Long? = -1.toLong() - TYPE_OP type=kotlin.Long? origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.Long + TYPE_OP type=kotlin.Long origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.Long CALL 'unaryMinus(): Int' type=kotlin.Int origin=null $this: CONST Int type=kotlin.Int value='1' VAR val test6: kotlin.Short? = -1.toShort() - TYPE_OP type=kotlin.Short? origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.Short + TYPE_OP type=kotlin.Short origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.Short CALL 'unaryMinus(): Int' type=kotlin.Int origin=null $this: CONST Int type=kotlin.Int value='1' VAR val test7: kotlin.Byte? = -1.toByte() - TYPE_OP type=kotlin.Byte? origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.Byte + TYPE_OP type=kotlin.Byte origin=IMPLICIT_INTEGER_COERCION typeOperand=kotlin.Byte CALL 'unaryMinus(): Int' type=kotlin.Int origin=null $this: CONST Int type=kotlin.Int value='1' FUN public fun testImplicitArguments(x: kotlin.Long = ...): kotlin.Unit