From 100f10211ea275843212fc6fd737a448252f610f Mon Sep 17 00:00:00 2001 From: "floitsch@google.com" Date: Wed, 5 Oct 2011 12:36:26 +0000 Subject: [PATCH] Add tests for const classes. Review URL: https://chromereviews.googleplex.com/3524015 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@36 260f80e4-7a28-3924-810f-c04153c831b5 --- tests/language/language.status | 1 + .../src/ConstObjectsAreImmutableTest.dart | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 tests/language/src/ConstObjectsAreImmutableTest.dart diff --git a/tests/language/language.status b/tests/language/language.status index d940b457f71..2d95eb4ae6d 100644 --- a/tests/language/language.status +++ b/tests/language/language.status @@ -108,6 +108,7 @@ RegExp3Test: Fail # 5299683 InterfaceFactory3NegativeTest: Fail # 5387405 GenericParameterizedExtendsTest: Skip # Bug 5392297 InterfaceFactoryMultiTest: Fail # Bug 5399939 +ConstObjectsAreImmutableTest: Fail # Bug 5202940 # Crashes in dartc. FunctionTypeAliasTest: Crash # Bug 4519208. diff --git a/tests/language/src/ConstObjectsAreImmutableTest.dart b/tests/language/src/ConstObjectsAreImmutableTest.dart new file mode 100644 index 00000000000..7e5ed95c157 --- /dev/null +++ b/tests/language/src/ConstObjectsAreImmutableTest.dart @@ -0,0 +1,23 @@ +// 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. +// Check that const objects (including literals) are immutable. + +class A { + const A(this.x, this.y); + final num x, y; +} + +main() { + var list = const [1, 2]; + Expect.throws(() => list[0] = 3); + Expect.equals(1, list[0]); + + var m = const { 'foo': 499 }; + Expect.throws(() => m['foo'] = 42); + Expect.equals(499, m['foo']); + + var a = const A(1, 2); + Expect.throws(() => a.x = 499); + Expect.equals(1, a.x); +}