| // 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); |
| } |