| /* |
| * Copyright (c) 2018, 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 If s does not start with const and it does not occur in a constant |
| * context, then it evaluates to a mutable set object as follows: |
| * |
| * Let e1 … en be the constant element expressions of s in source order. |
| * Evaluation of s proceeds as follows: |
| * |
| * First evaluate e1 … en, in source order, to values v1 … vn. |
| * Create a new LinkedHashSet<T> instance, o. |
| * For each i in 1 … n in numeric order, invoke the add method on o with vi as |
| * argument. Then s evaluates to an object implementing LinkedHashSet which has |
| * the same elements as o, and in the same iteration order. (Iteration order is |
| * insertion order, where adding an element equal to one already in the set does |
| * not change the set in any way). |
| * |
| * @description Check that if set literal is not constant then it is mutable |
| * @author sgrekhov@unipro.ru |
| */ |
| import "../../Utils/expect.dart"; |
| |
| main() { |
| var s1 = <int> {}; |
| s1.add(1); |
| Expect.iterableEquals({1}, s1); |
| s1.clear(); |
| Expect.iterableEquals(<int>{}, s1); |
| |
| var s2 = <int> {3, 1, 4}; |
| s2.add(5); |
| Expect.iterableEquals({3, 1, 4, 5}, s2); |
| s2.clear(); |
| Expect.iterableEquals(<int>{}, s2); |
| |
| var s3 = {1, 2, 3.14, null, true, 1}; |
| s3.add("x"); |
| Expect.iterableEquals({1, 2, 3.14, null, true, "x"}, s3); |
| s3.clear(); |
| Expect.iterableEquals(<Object>{}, s3); |
| } |