From 04ae78777426f6cb6a6656139fd2a9a199275e0a Mon Sep 17 00:00:00 2001 From: Pascal Welsch Date: Sun, 2 Dec 2018 17:35:33 +0100 Subject: [PATCH] Throw KMutableIterator.remove until implemented correctly Prevents #5 from returning wrong results --- lib/src/collection/iterator.dart | 7 ++++++- lib/src/collection/set_mutable.dart | 7 ++++++- lib/src/k_collection_mutable.dart | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/src/collection/iterator.dart b/lib/src/collection/iterator.dart index d173f29e..c9709c89 100644 --- a/lib/src/collection/iterator.dart +++ b/lib/src/collection/iterator.dart @@ -27,7 +27,12 @@ class DartIterator implements KMutableIterator { @override void remove() { - list.remove(lastRet); + // removing from list is wrong because is is a copy of the original list. + // remove should modify the underlying list, not the copy + // see how kotlin solved this: + // https://github.com/JetBrains/kotlin/blob/ba6da7c40a6cc502508faf6e04fa105b96bc7777/libraries/stdlib/js/src/kotlin/collections/InternalHashCodeMap.kt + throw UnimplementedError( + "remove() in not yet implemented. Please vote for https://github.com/passsy/dart_kollection/issues/5 for prioritization"); } } diff --git a/lib/src/collection/set_mutable.dart b/lib/src/collection/set_mutable.dart index 00dbf9cd..7399c3e0 100644 --- a/lib/src/collection/set_mutable.dart +++ b/lib/src/collection/set_mutable.dart @@ -122,6 +122,11 @@ class _MutableSetIterator extends KMutableIterator { @override void remove() { - _set.remove(lastReturned); + // removing from list is wrong because is is a copy of the original list. + // remove should modify the underlying list, not the copy + // see how kotlin solved this: + // https://github.com/JetBrains/kotlin/blob/ba6da7c40a6cc502508faf6e04fa105b96bc7777/libraries/stdlib/js/src/kotlin/collections/InternalHashCodeMap.kt + throw UnimplementedError( + "remove() in not yet implemented. Please vote for https://github.com/passsy/dart_kollection/issues/5 for prioritization"); } } diff --git a/lib/src/k_collection_mutable.dart b/lib/src/k_collection_mutable.dart index af2f3824..12f15b6f 100644 --- a/lib/src/k_collection_mutable.dart +++ b/lib/src/k_collection_mutable.dart @@ -7,6 +7,7 @@ import 'package:dart_kollection/dart_kollection.dart'; */ abstract class KMutableCollection implements KCollection, KMutableIterable { // Query Operations + @override KMutableIterator iterator(); // Modification Operations