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

/// @assertion Let list1 = const <V>[e11...e1n] and list2 = const <U>[e21...e2n]
/// be two constant list literals and let the  elements of list1 and list2
/// evaluate to  o11... o1n and o21... o2n respectively. Iff identical(o1i, o2i)
/// for 1 <= i <= n and V = U then identical(list1, list2).
/// @description Checks that constant lists with different elements or type
/// arguments are not identical.
/// @author msyabro

import '../../../Utils/expect.dart';

class C {
  const C(p1): x = p1;
  final x;
}

main() {
  Expect.isFalse(identical(const <String>[], const <Object>[]));

  Expect.isFalse(identical(const [1, 2, 1 + 2], const [1, 2, 4]));
  Expect.isFalse(identical(const <bool>[false], const <bool>[false, true]));
  Expect.isFalse(
      identical(const<Object> ["a", "b", "c"], const <String>["a", "b", "c"]));
  Expect.isFalse(
      identical(const [1, null, const C(1)], const [1, null, const C(2)]));
}
