| // 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 enables in-place literals (which aren't very useful): |
| /// |
| /// const list = [...["why"]]; |
| /// @description Checks that in-place literals are enabled for sets |
| /// @author iarkh@unipro.ru |
| |
| import "../../Utils/expect.dart"; |
| |
| main() { |
| const res1 = {...["why"]}; |
| Expect.setEquals({"why"}, res1); |
| const res2 = {...?["not"]}; |
| // ^^^^ |
| // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR |
| // ^ |
| // [cfe] Operand of null-aware operation '...?' has type 'List<String>' which excludes null. |
| Expect.setEquals({"not"}, res2); |
| |
| const res3 = {...{"why"}}; |
| Expect.setEquals({"why"}, res3); |
| const res4 = {...?{"not"}}; |
| // ^^^^ |
| // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR |
| // ^ |
| // [cfe] Operand of null-aware operation '...?' has type 'Set<String>' which excludes null. |
| Expect.setEquals({"not"}, res4); |
| |
| const aList = [1, 2, 3]; |
| |
| const res5 = {2, ...[1, 3], 4, 15, ...[null], ...{12345}, aList}; |
| Expect.setEquals({2, 1, 3, 4, 15, null, 12345, aList}, res5); |
| |
| const res6 = {1, 2, 3, ...[4, 5, 6], ...?[7, 8, 9], aList}; |
| // ^^^^ |
| // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR |
| // ^ |
| // [cfe] Operand of null-aware operation '...?' has type 'List<int>' which excludes null. |
| Expect.setEquals({1, 2, 3, 4, 5, 6, 7, 8, 9, aList}, res6); |
| |
| const aSet = {1, 2, 3}; |
| const res7 = {1, 2, 3, ...[4, 5, 6], ...?{7, 8, 9}, aSet}; |
| // ^^^^ |
| // [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR |
| // ^ |
| // [cfe] Operand of null-aware operation '...?' has type 'Set<int>' which excludes null. |
| Expect.setEquals({1, 2, 3, 4, 5, 6, 7, 8, 9, aSet}, res7); |
| } |