| /* |
| * 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: |
| * A spread element in a map literal has a static type that is not assignable |
| * to [Map<Object, Object>]. |
| * @description Checks that compile error is thrown if spread element in map |
| * literal is not assignable to [Map<Object, Object>] |
| * @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() { |
| var number = 1; |
| var str = "checkme"; |
| var list = [1, 2, 3, 4, 5]; |
| var itr = new MyIterator(); |
| |
| var m1 = <dynamic, dynamic>{...number}; //# 01: compile-time error |
| var m2 = <dynamic, dynamic>{...str}; //# 02: compile-time error |
| var m3 = <dynamic, dynamic>{...map}; //# 03: compile-time error |
| var m4 = <dynamic, dynamic>{...list[0]}; //# 04: compile-time error |
| var m5 = <dynamic, dynamic>{...itr[0]}; //# 05: compile-time error |
| |
| var m6 = <dynamic, dynamic>{...?number}; //# 06: compile-time error |
| var m7 = <dynamic, dynamic>{...?str}; //# 07: compile-time error |
| var m8 = <dynamic, dynamic>{...?map}; //# 08: compile-time error |
| var m9 = <dynamic, dynamic>{...?list[0]}; //# 09: compile-time error |
| var m10 = <dynamic, dynamic>{...?itr[0]}; //# 10: compile-time error |
| } |