From 3b53a5a7f77c4be0078941cb88df39cfaf3bbb55 Mon Sep 17 00:00:00 2001 From: Denver Coneybeare Date: Wed, 13 Nov 2024 17:06:51 +0000 Subject: [PATCH 1/2] NullableReference.kt: relax variance of the type parameter from invariant to covariant --- .../com/google/firebase/dataconnect/util/NullableReference.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firebase-dataconnect/src/main/kotlin/com/google/firebase/dataconnect/util/NullableReference.kt b/firebase-dataconnect/src/main/kotlin/com/google/firebase/dataconnect/util/NullableReference.kt index 9a67442e263..4e61ae74e32 100644 --- a/firebase-dataconnect/src/main/kotlin/com/google/firebase/dataconnect/util/NullableReference.kt +++ b/firebase-dataconnect/src/main/kotlin/com/google/firebase/dataconnect/util/NullableReference.kt @@ -15,7 +15,7 @@ */ package com.google.firebase.dataconnect.util -internal class NullableReference(val ref: T? = null) { +internal class NullableReference(val ref: T? = null) { override fun equals(other: Any?) = (other is NullableReference<*>) && other.ref == ref override fun hashCode() = ref?.hashCode() ?: 0 override fun toString() = ref?.toString() ?: "null" From a161e3df9a80deb3ffe704f099d0fef5ba9fa1fb Mon Sep 17 00:00:00 2001 From: Denver Coneybeare Date: Wed, 13 Nov 2024 17:07:29 +0000 Subject: [PATCH 2/2] NullableReference.kt: add class kdoc comments --- .../google/firebase/dataconnect/util/NullableReference.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/firebase-dataconnect/src/main/kotlin/com/google/firebase/dataconnect/util/NullableReference.kt b/firebase-dataconnect/src/main/kotlin/com/google/firebase/dataconnect/util/NullableReference.kt index 4e61ae74e32..ed9b9da8ee2 100644 --- a/firebase-dataconnect/src/main/kotlin/com/google/firebase/dataconnect/util/NullableReference.kt +++ b/firebase-dataconnect/src/main/kotlin/com/google/firebase/dataconnect/util/NullableReference.kt @@ -15,6 +15,11 @@ */ package com.google.firebase.dataconnect.util +/** + * A class that simply wraps a reference to another object, possibly a null reference. Instances of + * this class can be useful for the case where the meaning of `null` is overloaded, such as + * [kotlinx.coroutines.flow.MutableStateFlow.compareAndSet]. + */ internal class NullableReference(val ref: T? = null) { override fun equals(other: Any?) = (other is NullableReference<*>) && other.ref == ref override fun hashCode() = ref?.hashCode() ?: 0