From 80708868d5c252f13c60aa8822185cde2929b50c Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Thu, 6 Feb 2025 21:32:32 +0700 Subject: [PATCH] Fix emptyIterator making invalid cast --- gradle.properties | 2 +- .../kommons/collect/StreamyIterators.kt | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index ce12884..dfed0e3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ kotlin.code.style=official specifyKotlinAsDependency=false projectGroup=ru.dbotthepony.kommons -projectVersion=3.1.2 +projectVersion=3.1.3 guavaDepVersion=33.0.0 gsonDepVersion=2.8.9 diff --git a/src/main/kotlin/ru/dbotthepony/kommons/collect/StreamyIterators.kt b/src/main/kotlin/ru/dbotthepony/kommons/collect/StreamyIterators.kt index 2b23d14..aa8063b 100644 --- a/src/main/kotlin/ru/dbotthepony/kommons/collect/StreamyIterators.kt +++ b/src/main/kotlin/ru/dbotthepony/kommons/collect/StreamyIterators.kt @@ -2,6 +2,7 @@ package ru.dbotthepony.kommons.collect import ru.dbotthepony.kommons.util.KOptional import java.util.* +import java.util.NoSuchElementException import java.util.function.Predicate import java.util.stream.Collector import java.util.stream.Stream @@ -376,8 +377,22 @@ fun Iterator.maybe(): T? { null } +private object EmptyIterator : MutableIterator { + override fun hasNext(): Boolean { + return false + } + + override fun next(): Nothing { + throw NoSuchElementException() + } + + override fun remove() { + throw NoSuchElementException() + } +} + fun emptyIterator(): MutableIterator { - return emptyList().iterator() as MutableIterator + return EmptyIterator as MutableIterator } fun iteratorOf(value: T): Iterator {