Add ir interpreter tests
This commit is contained in:
committed by
TeamCityServer
parent
cc2d7340dc
commit
e28ab45c51
@@ -0,0 +1,39 @@
|
||||
@CompileTimeCalculation
|
||||
open class A
|
||||
|
||||
class B @CompileTimeCalculation constructor() {
|
||||
@CompileTimeCalculation
|
||||
override fun toString(): String {
|
||||
return super.toString()
|
||||
}
|
||||
}
|
||||
|
||||
class C
|
||||
|
||||
class D : A()
|
||||
|
||||
@CompileTimeCalculation
|
||||
fun checkToStringCorrectness(value: Any, startStr: String): Boolean {
|
||||
val string = value.toString()
|
||||
return string.subSequence(0, startStr.length) == startStr && string.get(startStr.length) == '@' && string.length <= startStr.length + 9
|
||||
}
|
||||
|
||||
@CompileTimeCalculation
|
||||
fun getTheSameValue(a: Any): Any = a
|
||||
|
||||
@CompileTimeCalculation
|
||||
fun theSameObjectToString(value: Any): Boolean {
|
||||
return value.toString() == getTheSameValue(value).toString()
|
||||
}
|
||||
|
||||
const val aString = <!EVALUATED: `true`!>checkToStringCorrectness(A(), "A")<!>
|
||||
const val bString = <!EVALUATED: `true`!>checkToStringCorrectness(B(), "B")<!>
|
||||
val cString = C().toString() // must not be calculated
|
||||
val dString = D().toString() // must not be calculated
|
||||
|
||||
const val arrayString = <!EVALUATED: `true`!>checkToStringCorrectness(arrayOf(A(), B()).toString(), "[Ljava.lang.Object;")<!>
|
||||
const val intArrayString = <!EVALUATED: `true`!>checkToStringCorrectness(intArrayOf(1, 2, 3).toString(), "[I")<!>
|
||||
|
||||
const val checkA = <!EVALUATED: `true`!>theSameObjectToString(A())<!>
|
||||
const val checkStringBuilder1 = <!EVALUATED: `true`!>theSameObjectToString(StringBuilder())<!>
|
||||
const val checkStringBuilder2 = <!EVALUATED: `true`!>theSameObjectToString(StringBuilder("Some Builder"))<!>
|
||||
Reference in New Issue
Block a user