ribesg
09/12/2019, 9:59 AMkotlin.native.concurrent.InvalidMutabilityExceptioncompanion object {
        internal var xs: Set<X> by atomic(HashSet())
            private set
        fun registerX(x: X) {
            xs = xs + x
        }
    }atomicinline fun <reified T> atomic(initial: T) = AtomicDelegate(initial)AtomicDelegateclass AtomicDelegate<T>(initial: T) : ReadWriteProperty<Any?, T> {
    private val atomic = AtomicReference(initial)
    override fun getValue(thisRef: Any?, property: KProperty<*>): T =
        atomic.get()
    override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {
        atomic.set(value)
    }
}AtomicReferenceinternal actual class AtomicReference<T> actual constructor(initial: T) {
    private val atomic =
        kotlin.native.concurrent.FreezableAtomicReference(initial)
    actual fun get(): T =
        atomic.value
    actual fun set(newValue: T) {
        atomic.compareAndSet(get(), newValue)
    }
}registerXUncaught Kotlin exception: kotlin.native.concurrent.InvalidMutabilityException: mutation attempt of frozen kotlin.collections.HashSet@221c288HashSet+Marko Mitic
09/12/2019, 10:14 AMMarko Mitic
09/12/2019, 10:17 AMsetValueatomic.set(value.freeze())ribesg
09/12/2019, 10:22 AMribesg
09/12/2019, 10:23 AMMarko Mitic
09/12/2019, 10:24 AMMarko Mitic
09/12/2019, 10:25 AMribesg
09/12/2019, 10:28 AMAtomicReferenceribesg
09/12/2019, 10:29 AMatomic.compareAndSet(get(), newValue.freeze())atomic.compareAndSet(get(), newValue)Marko Mitic
09/12/2019, 10:30 AMMarko Mitic
09/12/2019, 10:35 AMMarko Mitic
09/12/2019, 10:36 AMDominaezzz
09/12/2019, 10:47 AMxs + xribesg
09/12/2019, 11:02 AMribesg
09/12/2019, 11:03 AMobjectatomicribesg
09/12/2019, 11:06 AM+public operator fun <T> Set<T>.plus(element: T): Set<T> {
    val result = LinkedHashSet<T>(mapCapacity(size + 1))
    result.addAll(this)
    result.add(element)
    return result
}addaddAllresultribesg
09/12/2019, 11:12 AMDominaezzz
09/12/2019, 11:13 AMHashSetMarko Mitic
09/12/2019, 11:24 AMribesg
09/12/2019, 12:10 PMxs = xs + xxs = setOf(x, *xs.toTypedArray())+louiscad
09/12/2019, 12:26 PMFrozenDelegateribesg
09/12/2019, 1:41 PMribesg
09/12/2019, 1:42 PMunregisterX