blob: 6727eb4b34193de97c4d1935fa1838fac929bb92 [file] [log] [blame]
/*
* Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
* for details. All rights reserved. Use of this source code is governed by a
* BSD-style license that can be found in the LICENSE file.
*/
/**
* @assertion This is true even if the object being spread is a user-defined
* class that implements [Iterable] but isn't even a subtype of List.
* @description Checks that [Iterable] object can be spread into the spreadable
* set.
* @author iarkh@unipro.ru
*/
import "dart:collection";
import "../../Utils/expect.dart";
class MyIterable extends IterableBase {
MyIterable();
Iterator get iterator => MyIterator();
}
class MyIterator extends Iterator {
int i = -1;
MyIterator() {}
@override
bool moveNext() {
return ++i < 10;
}
@override
dynamic get current { return i; }
}
main() {
Iterable iterable = new MyIterable();
Expect.setEquals(iterable.toList().toSet(), {...iterable});
Iterable? iterable1 = iterable as Iterable?;
Expect.setEquals(iterable.toList().toSet(), {...?iterable1});
}