blob: 51522129306cb3f43304db84d5a292879ac91cc8 [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 It is a static error if:
* If a list or set spread element's static type implements [Iterable<T>] for
* some [T] and [T] is not assignable to the element type of the list.
* @description Checks that compile error is thrown if spread element type in
* set literal is not assignable to the type of the set.
* @author iarkh@unipro.ru
*/
// SharedOptions=--enable-experiment=constant-update-2018
import "dart:collection";
class MyIterable<T> extends IterableBase<T> {
MyIterator<T> iterator;
MyIterable() { iterator = new MyIterator(); }
Iterator getIterator<T>() { return iterator; }
}
class MyIterator<T> extends Iterator<T> {
@override
bool moveNext() { return false; }
@override
T get current { return null; }
}
main() {
List<Object> l1 = <Object> [];
List<int> l2 = <int>[1, 2, 3];
List<bool> l3 = <bool>[true, false, true, true];
List<bool> l4 = <bool>[true, false, true, true];
List<int> l5 = <int>[];
List<bool> l6 = <bool>[];
List<String> l7 = <String>[];
List<String> l8 = <String>["1", "2"];
List<Object> l9 = <Object>["1", "2"];
Iterable<int> i1 = new MyIterable<int>();
Iterable<String> i2 = new MyIterable<String>();
Iterable<bool> i3 = new MyIterable<bool>();
Iterable i4 = new MyIterable<Object>();
Set list1 = <String>{...l1};
Set list2 = <String>{...l2}; //# 01: compile-time error
Set list3 = <Object>{...l3};
Set list4 = <String>{...l4}; //# 02: compile-time error
Set list5 = <String>{...l5}; //# 03: compile-time error
Set list6 = <String>{...l6}; //# 04: compile-time error
Set list7 = <String>{...l7};
Set list8 = <String>{...l8};
Set list9 = <String>{...l9};
Set list11 = <String>{...i1}; //# 05: compile-time error
Set list12 = <String>{...i2};
Set list13 = <String>{...i3}; //# 06: compile-time error
Set list14 = <String>{...i4};
}