| Index: test/codegen/corelib/const_list_literal_test.dart
|
| diff --git a/test/codegen/corelib/const_list_literal_test.dart b/test/codegen/corelib/const_list_literal_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..918503d286d86ae563e698ecb8ba656bfcbab302
|
| --- /dev/null
|
| +++ b/test/codegen/corelib/const_list_literal_test.dart
|
| @@ -0,0 +1,79 @@
|
| +// Copyright (c) 2011, 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.
|
| +
|
| +import "package:expect/expect.dart";
|
| +
|
| +// Test that a final list literal is not expandable nor modifiable.
|
| +
|
| +class ConstListLiteralTest {
|
| +
|
| + static void testMain() {
|
| + var list = const [4, 2, 3];
|
| + Expect.equals(3, list.length);
|
| +
|
| + var exception = null;
|
| + try {
|
| + list.add(4);
|
| + } on UnsupportedError catch (e) {
|
| + exception = e;
|
| + }
|
| + Expect.equals(true, exception != null);
|
| + Expect.equals(3, list.length);
|
| + exception = null;
|
| +
|
| + exception = null;
|
| + try {
|
| + list.addAll([4, 5]);
|
| + } on UnsupportedError catch (e) {
|
| + exception = e;
|
| + }
|
| + Expect.equals(true, exception != null);
|
| + Expect.equals(3, list.length);
|
| +
|
| + exception = null;
|
| + try {
|
| + list[0] = 0;
|
| + } on UnsupportedError catch (e) {
|
| + exception = e;
|
| + }
|
| + Expect.equals(true, exception != null);
|
| + Expect.equals(3, list.length);
|
| +
|
| + exception = null;
|
| + try {
|
| + list.sort((a, b) => a - b);
|
| + } on UnsupportedError catch (e) {
|
| + exception = e;
|
| + }
|
| + Expect.equals(true, exception != null);
|
| + Expect.equals(3, list.length);
|
| + Expect.equals(4, list[0]);
|
| + Expect.equals(2, list[1]);
|
| + Expect.equals(3, list[2]);
|
| +
|
| + exception = null;
|
| + try {
|
| + list.setRange(0, 1, [1], 0);
|
| + } on UnsupportedError catch (e) {
|
| + exception = e;
|
| + }
|
| + Expect.equals(true, exception != null);
|
| + Expect.equals(3, list.length);
|
| + Expect.equals(4, list[0]);
|
| + Expect.equals(2, list[1]);
|
| + Expect.equals(3, list[2]);
|
| +
|
| + // Note: the next check is a regression test for dart2js. The immutable list
|
| + // overrides the 'length' property of List, but relies on using the native
|
| + // 'forEach' construct in Array. This test ensures that our strategy works
|
| + // correctly.
|
| + int x = 0;
|
| + list.forEach((e) { x += e; });
|
| + Expect.equals(9, x);
|
| + }
|
| +}
|
| +
|
| +main() {
|
| + ConstListLiteralTest.testMain();
|
| +}
|
|
|