// 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.

// @dart = 2.9

import "package:expect/expect.dart";

class A {
  const A(this.x, this.y);
  final num x, y;
}

main() {
  dynamic list = const [1, 2];
  Expect.throws(() => list[0] = 3);
  Expect.equals(1, list[0]);

  dynamic m = const {'foo': 499};
  Expect.throws(() => m['foo'] = 42);
  Expect.equals(499, m['foo']);

  dynamic a1 = const A(1, 2);
  Expect.throws(() => a1.x = 499);
  Expect.equals(1, a1.x);

  dynamic a2 = const A(1, 2);
  Expect.throws(() => a2.x = 499);
  Expect.equals(1, a2.x);
}
