[FIR-TEST] Add new testdata generated after changes in previous commit

This commit is contained in:
Dmitriy Novozhilov
2019-12-11 16:16:22 +03:00
parent e9c02a1cca
commit 2536fa0cd5
4578 changed files with 104067 additions and 1 deletions
@@ -0,0 +1,49 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
import kotlin.reflect.KProperty
import kotlin.properties.ReadWriteProperty
class CleanupTestExample {
val cleanUpBlocks: MutableList<Pair<Any, (Any) -> Unit>> = mutableListOf()
class CleaningDelegate<T : Any?>(
initialValue: T? = null,
val cleanupBlocks: MutableList<Pair<Any, (Any) -> Unit>>,
val block: (T) -> Unit
) : ReadWriteProperty<Any?, T> {
private var value: T? = initialValue
init {
addCleanupBlock(initialValue)
}
override fun getValue(thisRef: Any?, property: KProperty<*>): T {
return value ?: throw IllegalStateException("Property ${property.name} should be initialized before get.")
}
@Suppress("UNCHECKED_CAST")
override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {
addCleanupBlock(value)
this.value = value
}
fun addCleanupBlock(value: T?) {
if (value != null) {
@Suppress("UNCHECKED_CAST")
cleanupBlocks.add((value to block) as Pair<Any, (Any) -> Unit>)
}
}
}
data class TestHolder(val num: Int)
fun <T : Any?> cleanup(initialValue: T? = null, block: (T) -> Unit) = CleaningDelegate(initialValue, cleanUpBlocks, block)
fun testWithCleanup() {
val testHolder = TestHolder(1)
var thing: TestHolder by CleaningDelegate(testHolder, cleanupBlocks = cleanUpBlocks, block = { println("cleaning up $it") })
var thing2: TestHolder by cleanup(testHolder) { println("cleaning up $it") }
}
}