| // 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 It is a compile-time error if any of the values of the constant |
| /// element expressions override Object.operator== unless they are instances of |
| /// int or String, objects implementing Symbol originally created by a symbol |
| /// literal or a constant invocation of the Symbol constructor, or objects |
| /// implementing Type originally created by a constant type literal expression. |
| /// It is a compile-time error if any two of the values are equal according to == |
| /// |
| /// @description Checks that it is no compile-time error if all values of the |
| /// constant element expressions are instances of int or String, objects |
| /// implementing Symbol originally created by a symbol literal or a constant |
| /// invocation of the Symbol constructor, or objects implementing Type originally |
| /// created by a constant type literal expression |
| /// @author sgrekhov@unipro.ru |
| /// @issue 43281 |
| |
| import "../../Utils/expect.dart"; |
| |
| class C {} |
| |
| main() { |
| var v1 = const {1, 2, 3, null}; |
| Expect.iterableEquals({1, 2, 3, null}, v1); |
| |
| var v2 = const <int> {1, 2, 3}; |
| Expect.iterableEquals({1, 2, 3}, v2); |
| |
| var v3 = const <int> {}; |
| Expect.iterableEquals({}, v3); |
| |
| const v4 = <int> {1, 2, 3, }; |
| Expect.iterableEquals({1, 2, 3}, v4); |
| |
| var v5 = const {'1', '2', '3', '4', null}; |
| Expect.iterableEquals({'1', '2', '3', '4', null}, v5); |
| |
| var v6 = const <String> {'1', '2', '3', '4'}; |
| Expect.iterableEquals({'1', '2', '3', '4'}, v6); |
| |
| var v7 = const <String> {}; |
| Expect.iterableEquals({}, v7); |
| |
| const v8 = <String> {'1', '2', '3', '4',}; |
| Expect.iterableEquals({'1', '2', '3', '4'}, v8); |
| |
| var v9 = const {const Symbol('foo'), const Symbol('bar'), null}; |
| Expect.iterableEquals({const Symbol('foo'), const Symbol('bar'), null}, v9); |
| |
| var v10 = const <Symbol>{const Symbol('foo'), const Symbol('bar')}; |
| Expect.iterableEquals({const Symbol('foo'), const Symbol('bar')}, v10); |
| |
| var v11 = const <Symbol> {}; |
| Expect.iterableEquals({}, v11); |
| |
| const v12 = <Symbol>{const Symbol('foo'), const Symbol('bar'), }; |
| Expect.iterableEquals({const Symbol('foo'), const Symbol('bar')}, v12); |
| |
| var v13 = const {#==, #foo, #C}; |
| Expect.iterableEquals({#==, #foo, #C}, v13); |
| |
| var v14 = const <Symbol>{#==, #foo, #C}; |
| Expect.iterableEquals({#==, #foo, #C}, v14); |
| |
| const v15 = <Symbol>{#==, #foo, #C,}; |
| Expect.iterableEquals({#==, #foo, #C}, v15); |
| |
| var v16 = const {int, num, String,}; |
| Expect.iterableEquals({int, num, String}, v16); |
| |
| var v17 = const <Type?>{int, num, String, null}; |
| Expect.iterableEquals({int, num, String, null}, v17); |
| |
| const v18 = {int, num, String}; |
| Expect.iterableEquals({int, num, String}, v18); |
| } |