diff --git a/attributes-kt/src/commonMain/kotlin/space/kscience/attributes/Attributes.kt b/attributes-kt/src/commonMain/kotlin/space/kscience/attributes/Attributes.kt index 8ddb0cbc7..ab6185520 100644 --- a/attributes-kt/src/commonMain/kotlin/space/kscience/attributes/Attributes.kt +++ b/attributes-kt/src/commonMain/kotlin/space/kscience/attributes/Attributes.kt @@ -30,7 +30,15 @@ public interface Attributes { override fun hashCode(): Int public companion object { - public val EMPTY: Attributes = MapAttributes(emptyMap()) + public val EMPTY: Attributes = object : Attributes { + override val content: Map, Any?> get() = emptyMap() + + override fun toString(): String = "Attributes.EMPTY" + + override fun equals(other: Any?): Boolean = (other as? Attributes)?.isEmpty() ?: false + + override fun hashCode(): Int = Unit.hashCode() + } public fun equals(a1: Attributes, a2: Attributes): Boolean = a1.keys == a2.keys && a1.keys.all { a1[it] == a2[it] } @@ -43,7 +51,7 @@ internal class MapAttributes(override val content: Map, Any?>) override fun hashCode(): Int = content.hashCode() } -public fun Attributes.isEmpty(): Boolean = content.isEmpty() +public fun Attributes.isEmpty(): Boolean = keys.isEmpty() /** * Get attribute value or default diff --git a/attributes-kt/src/commonMain/kotlin/space/kscience/attributes/AttributesBuilder.kt b/attributes-kt/src/commonMain/kotlin/space/kscience/attributes/AttributesBuilder.kt index 6f42d1dcf..ecf3da6f2 100644 --- a/attributes-kt/src/commonMain/kotlin/space/kscience/attributes/AttributesBuilder.kt +++ b/attributes-kt/src/commonMain/kotlin/space/kscience/attributes/AttributesBuilder.kt @@ -15,9 +15,9 @@ public class AttributesBuilder internal constructor() : Attributes { private val map = mutableMapOf, Any?>() - override fun toString(): String = "Attributes(value=${content.entries})" + override fun toString(): String = "Attributes(value=${map.entries})" override fun equals(other: Any?): Boolean = other is Attributes && Attributes.equals(this, other) - override fun hashCode(): Int = content.hashCode() + override fun hashCode(): Int = map.hashCode() override val content: Map, Any?> get() = map