filterNotTo<C extends KtMutableCollection> method
Appends all elements not matching the given predicate
to the given destination
.
destination
is not type checked by the compiler due to https://github.com/dart-lang/sdk/issues/35518,
but will be checked at runtime.
C
actually is expected to be C extends KtMutableCollection<T>
Implementation
// TODO Change to `C extends KtMutableCollection<T>` once https://github.com/dart-lang/sdk/issues/35518 has been fixed
C filterNotTo<C extends KtMutableCollection<dynamic>>(
C destination, bool Function(T) predicate) {
assert(() {
if (destination is! KtMutableCollection<T> && mutableListOf<T>() is! C) {
throw ArgumentError("filterNotTo destination has wrong type parameters."
"\nExpected: KtMutableCollection<$T>, Actual: ${destination.runtimeType}"
"\ndestination (${destination.runtimeType}) entries aren't subtype of "
"map ($runtimeType) entries. Entries can't be copied to destination."
"\n\n$kBug35518GenericTypeError");
}
return true;
}());
for (final element in iter) {
if (!predicate(element)) {
destination.add(element);
}
}
return destination;
}