blob: 8d6156b3b449d657bf79ed5bfefcb00a092a1b0e [file] [log] [blame]
import kotlin.collections.*
@CompileTimeCalculation
open class MyArrayList<E>: ArrayList<E>() {
var addCounter = 0
override fun add(element: E): Boolean {
addCounter++
return super.add(element)
}
}
@CompileTimeCalculation
class MyOtherArrayList<E>: MyArrayList<E>() {
override fun addAll(elements: Collection<E>): Boolean {
return true // do nothing
}
}
@CompileTimeCalculation
fun test(list: MyArrayList<Int>): String {
list.add(1)
list.add(2)
list.add(3)
val otherList = arrayListOf(4, 5, 6)
list.addAll(otherList)
list.addAll(emptyList<Int>())
return "Counter " + list.addCounter + "; size " + list.size
}
const val testResult1 = <!EVALUATED: `Counter 3; size 6`!>test(MyArrayList<Int>())<!>
const val testResult2 = <!EVALUATED: `Counter 3; size 3`!>test(MyOtherArrayList<Int>())<!>