Freezable.{frozen, unfrozen} refactoring: add type safety

This commit is contained in:
Nikita Bobko
2021-12-09 18:56:59 +01:00
parent 8a289440ce
commit 735d46efb4
2 changed files with 9 additions and 10 deletions
@@ -40,8 +40,10 @@ abstract class Freezable {
private var frozen: Boolean = false
private fun getInstanceWithFreezeStatus(value: Boolean) = if (value == frozen) this else copyBean(this).apply { frozen = value }
internal fun getInstanceWithFreezeStatus(value: Boolean) = if (value == frozen) this else copyBean(this).apply { frozen = value }
}
fun frozen() = getInstanceWithFreezeStatus(true)
fun unfrozen() = getInstanceWithFreezeStatus(false)
}
@Suppress("UNCHECKED_CAST")
fun <T : Freezable> T.frozen(): T = getInstanceWithFreezeStatus(true) as T
@Suppress("UNCHECKED_CAST")
fun <T : Freezable> T.unfrozen(): T = getInstanceWithFreezeStatus(false) as T