Use original descriptors on implicit coercion to unit generation

This commit is contained in:
Mikhael Bogdanov
2018-08-14 16:02:27 +03:00
parent e01e832acd
commit 6d915bd68c
@@ -233,7 +233,7 @@ class InsertImplicitCasts(context: GeneratorContext) : IrElementTransformerVoid(
}
private fun IrExpression.coerceToUnit(): IrExpression {
val valueType = this.type.originalKotlinType!!
val valueType = getKotlinType(this)
return if (KotlinTypeChecker.DEFAULT.isSubtypeOf(valueType, builtIns.unitType))
this
@@ -247,6 +247,11 @@ class InsertImplicitCasts(context: GeneratorContext) : IrElementTransformerVoid(
)
}
private fun getKotlinType(irExpression: IrExpression) =
if (irExpression is IrCall)
irExpression.symbol.descriptor.original.returnType!!
else irExpression.type.originalKotlinType!!
private fun KotlinType.isBuiltInIntegerType(): Boolean =
KotlinBuiltIns.isByte(this) ||
KotlinBuiltIns.isShort(this) ||