// 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 It is a compile-time error if any of the values of the constant
/// element expressions override Object.operator== unless they are instances of
/// int or String, objects implementing Symbol originally created by a symbol
/// literal or a constant invocation of the Symbol constructor, or objects
/// implementing Type originally created by a constant type literal expression.
/// It is a compile-time error if any two of the values are equal according to ==
///
/// @description Checks that it is a compile-time error if any of the values of
/// the constant element expressions override Object.operator==
/// @author sgrekhov@unipro.ru

class C {
  final int id;
  final String name;
  const C(this.id, this.name);
  int get hashCode => id;
  bool operator==(Object other) => other is C && id == other.id;
  String toString() => "C($id, $name)";
}

main() {
  var v1 = const {1, '2', const Duration(seconds: 1)};
  //       ^
  // [cfe] Constant evaluation error:
  //                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS
  var v2 = const <Object> {1, '2', const Duration(seconds: 1)};
  //       ^
  // [cfe] Constant evaluation error:
  //                               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS
  var v3 = const {1, '2', const C(1, "x")};
  //       ^
  // [cfe] Constant evaluation error:
  //                      ^^^^^^^^^^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS
  var v4 = const {1, '2', const C(1, "x")};
  //       ^
  // [cfe] Constant evaluation error:
  //                      ^^^^^^^^^^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.CONST_SET_ELEMENT_TYPE_IMPLEMENTS_EQUALS
}
