Do not apply constant folding for non built-in functions

#KT-15872 Fixed
This commit is contained in:
Mikhail Zarechenskiy
2017-02-07 20:22:21 +03:00
parent 935f7b1cc1
commit e7ea076093
9 changed files with 68 additions and 0 deletions
@@ -0,0 +1,18 @@
infix fun Int.rem(other: Int) = 10
infix operator fun Int.minus(other: Int): Int = 20
fun box(): String {
val a = 5 rem 2
if (a != 10) return "fail 1"
val b = 5 minus 3
if (b != 20) return "fail 2"
val a1 = 5.rem(2)
if (a1 != 1) return "fail 3"
val b2 = 5.minus(3)
if (b2 != 2) return "fail 4"
return "OK"
}
@@ -0,0 +1,6 @@
@kotlin.Metadata
public final class InfixFunctionOverBuiltinMemberKt {
public final static @org.jetbrains.annotations.NotNull method box(): java.lang.String
public final static method minus(p0: int, p1: int): int
public final static method rem(p0: int, p1: int): int
}
@@ -0,0 +1,10 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE, -UNUSED_PARAMETER
infix fun Int.rem(other: Int) = 10
infix operator fun Int.minus(other: Int): Int = 20
const val a1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>(-5) rem 2<!>
const val a2 = (-5).rem(2)
const val b1 = <!CONST_VAL_WITH_NON_CONST_INITIALIZER!>5 minus 3<!>
const val b2 = 5.minus(3)
@@ -0,0 +1,8 @@
package
public const val a1: kotlin.Int
public const val a2: kotlin.Int = -1
public const val b1: kotlin.Int
public const val b2: kotlin.Int = 2
public operator infix fun kotlin.Int.minus(/*0*/ other: kotlin.Int): kotlin.Int
public infix fun kotlin.Int.rem(/*0*/ other: kotlin.Int): kotlin.Int