[FIR] Approximate all integer literals which resolved in independent mode
#KT-42016
This commit is contained in:
Vendored
+2
-2
@@ -1,7 +1,7 @@
|
||||
class Box<T>(val value: T)
|
||||
|
||||
fun box() : String {
|
||||
val b = Box<Long>(2 * 3)
|
||||
val b = Box<Long>(2l * 3)
|
||||
val expected: Long? = 6L
|
||||
return if (b.value == expected) "OK" else "fail"
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -1,7 +1,7 @@
|
||||
class Box<T>(val value: T)
|
||||
|
||||
fun box() : String {
|
||||
val b = Box<Long>(x@ (1 + 2))
|
||||
val b = Box<Long>(x@ (1l + 2))
|
||||
val expected: Long? = 3L
|
||||
return if (b.value == expected) "OK" else "fail"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// TARGET_BACKEND: JVM
|
||||
|
||||
// WITH_RUNTIME
|
||||
|
||||
Vendored
+2
-2
@@ -5,9 +5,9 @@ import kotlin.reflect.KProperty
|
||||
operator fun Any.getValue(x: Any?, y: Any): Any = null!!
|
||||
|
||||
class C {
|
||||
val x by <!UNRESOLVED_REFERENCE!>1<!>
|
||||
val x by 1
|
||||
val `$$delegatedProperties`: Array<KProperty<*>> = null!!
|
||||
}
|
||||
|
||||
val x by <!UNRESOLVED_REFERENCE!>1<!>
|
||||
val x by 1
|
||||
val `$$delegatedProperties`: Array<KProperty<*>> = null!!
|
||||
|
||||
+4
-4
@@ -10,21 +10,21 @@ fun test() {
|
||||
<!INAPPLICABLE_CANDIDATE!>fooInt<!>(1 - 1.toLong())
|
||||
fooInt(1 - 1.toShort())
|
||||
|
||||
fooByte(1 - 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 - 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 - 1.toInt())
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 - 1.toByte())
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 - 1.toLong())
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 - 1.toShort())
|
||||
|
||||
fooLong(1 - 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1 - 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1 - 1.toInt())
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1 - 1.toByte())
|
||||
fooLong(1 - 1.toLong())
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1 - 1.toShort())
|
||||
|
||||
fooShort(1 - 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 - 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 - 1.toInt())
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 - 1.toByte())
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 - 1.toLong())
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 - 1.toShort())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
fun fooInt(p: Int) = p
|
||||
fun fooLong(p: Long) = p
|
||||
fun fooByte(p: Byte) = p
|
||||
fun fooShort(p: Short) = p
|
||||
|
||||
fun test() {
|
||||
fooInt(1 + 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 + 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1 + 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 + 1)
|
||||
|
||||
fooInt(1 * 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 * 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1 * 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 * 1)
|
||||
|
||||
fooInt(1 / 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 / 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1 / 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 / 1)
|
||||
|
||||
fooInt(1 % 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 % 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1 % 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 % 1)
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
fun fooInt(p: Int) = p
|
||||
fun fooLong(p: Long) = p
|
||||
fun fooByte(p: Byte) = p
|
||||
@@ -24,4 +23,4 @@ fun test() {
|
||||
fooByte(1 % 1)
|
||||
fooLong(1 % 1)
|
||||
fooShort(1 % 1)
|
||||
}
|
||||
}
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
fun fooInt(p: Int) = p
|
||||
fun fooLong(p: Long) = p
|
||||
fun fooByte(p: Byte) = p
|
||||
fun fooShort(p: Short) = p
|
||||
|
||||
fun test() {
|
||||
fooInt(1.plus(1))
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1.plus(1))
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1.plus(1))
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1.plus(1))
|
||||
|
||||
fooInt(1.times(1))
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1.times(1))
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1.times(1))
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1.times(1))
|
||||
|
||||
fooInt(1.div(1))
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1.div(1))
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1.div(1))
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1.div(1))
|
||||
|
||||
fooInt(1.rem(1))
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1.rem(1))
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1.rem(1))
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1.rem(1))
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
// FIR_IDENTICAL
|
||||
fun fooInt(p: Int) = p
|
||||
fun fooLong(p: Long) = p
|
||||
fun fooByte(p: Byte) = p
|
||||
@@ -24,4 +23,4 @@ fun test() {
|
||||
fooByte(1.rem(1))
|
||||
fooLong(1.rem(1))
|
||||
fooShort(1.rem(1))
|
||||
}
|
||||
}
|
||||
|
||||
+13
-13
@@ -5,22 +5,22 @@ fun fooShort(p: Short) = p
|
||||
|
||||
fun test() {
|
||||
fooInt(1 plus 1)
|
||||
fooByte(1 plus 1)
|
||||
fooLong(1 plus 1)
|
||||
fooShort(1 plus 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 plus 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1 plus 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 plus 1)
|
||||
|
||||
fooInt(1 times 1)
|
||||
fooByte(1 times 1)
|
||||
fooLong(1 times 1)
|
||||
fooShort(1 times 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 times 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1 times 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 times 1)
|
||||
|
||||
fooInt(1 div 1)
|
||||
fooByte(1 div 1)
|
||||
fooLong(1 div 1)
|
||||
fooShort(1 div 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 div 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1 div 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 div 1)
|
||||
|
||||
fooInt(1 rem 1)
|
||||
fooByte(1 rem 1)
|
||||
fooLong(1 rem 1)
|
||||
fooShort(1 rem 1)
|
||||
}
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 rem 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1 rem 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 rem 1)
|
||||
}
|
||||
|
||||
+2
-2
@@ -5,9 +5,9 @@ fun <T> consumeLongAndMaterialize(x: Long): T = null as T
|
||||
fun consumeAny(x: Any) = x
|
||||
|
||||
fun main() {
|
||||
consumeAny(consumeLongAndMaterialize(3 * 1000))
|
||||
consumeAny(consumeLongAndMaterialize(3l * 1000))
|
||||
|
||||
if (true) {
|
||||
consumeLongAndMaterialize(3 * 1000)
|
||||
consumeLongAndMaterialize(3l * 1000)
|
||||
} else true
|
||||
}
|
||||
|
||||
+4
-4
@@ -7,9 +7,9 @@ fun fooShort(p: Short) = p
|
||||
|
||||
fun test() {
|
||||
fooInt(1 % 1)
|
||||
fooByte(1 % 1)
|
||||
fooLong(1 % 1)
|
||||
fooShort(1 % 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooByte<!>(1 % 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooLong<!>(1 % 1)
|
||||
<!INAPPLICABLE_CANDIDATE!>fooShort<!>(1 % 1)
|
||||
}
|
||||
|
||||
public operator fun Int.rem(other: Int): Int = 0
|
||||
public operator fun Int.rem(other: Int): Int = 0
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
fun testSimple() = Box<Long>(2 * 3)
|
||||
fun testSimple() = Box<Long>(2l * 3)
|
||||
|
||||
inline fun <reified T> testArray(n: Int, crossinline block: () -> T): Array<T> {
|
||||
return Array<T>(n) { block() }
|
||||
|
||||
+3
-3
@@ -29,7 +29,7 @@ FILE fqName:<root> fileName:/primitivesImplicitConversions.kt
|
||||
PROPERTY name:test4 visibility:public modality:FINAL [val]
|
||||
FIELD PROPERTY_BACKING_FIELD name:test4 type:kotlin.Long visibility:private [final,static]
|
||||
EXPRESSION_BODY
|
||||
CALL 'public final fun unaryMinus (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Long origin=null
|
||||
CALL 'public final fun unaryMinus (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
|
||||
$this: CONST Int type=kotlin.Int value=42
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test4> visibility:public modality:FINAL <> () returnType:kotlin.Long
|
||||
correspondingProperty: PROPERTY name:test4 visibility:public modality:FINAL [val]
|
||||
@@ -39,7 +39,7 @@ FILE fqName:<root> fileName:/primitivesImplicitConversions.kt
|
||||
PROPERTY name:test5 visibility:public modality:FINAL [val]
|
||||
FIELD PROPERTY_BACKING_FIELD name:test5 type:kotlin.Short visibility:private [final,static]
|
||||
EXPRESSION_BODY
|
||||
CALL 'public final fun unaryMinus (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Short origin=null
|
||||
CALL 'public final fun unaryMinus (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
|
||||
$this: CONST Int type=kotlin.Int value=42
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test5> visibility:public modality:FINAL <> () returnType:kotlin.Short
|
||||
correspondingProperty: PROPERTY name:test5 visibility:public modality:FINAL [val]
|
||||
@@ -49,7 +49,7 @@ FILE fqName:<root> fileName:/primitivesImplicitConversions.kt
|
||||
PROPERTY name:test6 visibility:public modality:FINAL [val]
|
||||
FIELD PROPERTY_BACKING_FIELD name:test6 type:kotlin.Byte visibility:private [final,static]
|
||||
EXPRESSION_BODY
|
||||
CALL 'public final fun unaryMinus (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Byte origin=null
|
||||
CALL 'public final fun unaryMinus (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
|
||||
$this: CONST Int type=kotlin.Int value=42
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test6> visibility:public modality:FINAL <> () returnType:kotlin.Byte
|
||||
correspondingProperty: PROPERTY name:test6 visibility:public modality:FINAL [val]
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
FILE fqName:<root> fileName:/simple.kt
|
||||
PROPERTY name:test visibility:public modality:FINAL [val]
|
||||
FIELD PROPERTY_BACKING_FIELD name:test type:kotlin.Int visibility:private [final,static]
|
||||
EXPRESSION_BODY
|
||||
CALL 'public final fun plus (other: kotlin.Int): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=null
|
||||
$this: CONST Int type=kotlin.Int value=2
|
||||
other: CONST Int type=kotlin.Int value=2
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test> visibility:public modality:FINAL <> () returnType:kotlin.Int
|
||||
correspondingProperty: PROPERTY name:test visibility:public modality:FINAL [val]
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='public final fun <get-test> (): kotlin.Int declared in <root>'
|
||||
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test type:kotlin.Int visibility:private [final,static]' type=kotlin.Int origin=null
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DUMP_DEPENDENCIES
|
||||
|
||||
val test = 2 + 2
|
||||
Reference in New Issue
Block a user