blob: 52d7b832c2e4afea4aeac73aa314908efc8e74fa [file] [log] [blame]
/*
* 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 a constant set literals is created which has the same type
* argument and contains the same values in the same order, as the value of a
* previously evaluated constant set literal, then the constant set literal
* expression instead evaluates to the previously created constant set. That is,
* constant set literals are canonicalized.
*
* @description Check that if a constant set literals is created which has the
* same type argument and contains the same values in the same order, as the
* value of a previously evaluated constant set literal, then the constant set
* literal expression instead evaluates to the previously created constant set
* @author sgrekhov@unipro.ru
*/
// SharedOptions=--enable-experiment=constant-update-2018
import "../../Utils/expect.dart";
main() {
Expect.isTrue(identical(const <int>{}, const <int>{}));
Expect.isFalse(identical(<int>{}, <int>{}));
Expect.isFalse(identical(const <int>{}, <int>{}));
Expect.isTrue(identical(const <int>{1, 2, 3}, const <int>{1, 2, 3}));
Expect.isTrue(identical(const <int>{1, 2, 3}, const <int>{1, 2, 2 + 1,}));
Expect.isTrue(identical(const <int>{1, 2, 3}, const <int>{1, 2, 3, }));
Expect.isFalse(identical(const <int>{1, 2, 3}, const <int>{2, 3, 1}));
const s1 = {'1', '2' + '1', "3 - 1", null, !true};
var s2 = const {'1', '21', "3 - 1", null, false};
Expect.isTrue(identical(s1, s2));
}