// 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 It is a compile-time error if two keys of a constant map literal
 * are equal according to their ‘==’ operator
 * @description Check that it is a compile-time error if two keys of a constant
 * map literal are equal according to their ‘==’ operator
 * @issue #32983
 * @author msyabro
 * @author sgrekhov@unipro.ru
 */

main() {
  const m1 = <int, String>{1: "val1", 1: "val2"};
  //                      ^
  // [cfe] Constant evaluation error:
  //                                  ^
  // [analyzer] COMPILE_TIME_ERROR.EQUAL_KEYS_IN_CONST_MAP
  var m2 = const <String, int>{"key1": 1, "key1": 2};
  //       ^
  // [cfe] Constant evaluation error:
  //                                      ^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.EQUAL_KEYS_IN_CONST_MAP
}
