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

// @dart = 2.9

/// @assertion It is a compile-time error if the class C has an implementation
/// of the operator == other than the one inherited from Object unless the
/// value of the expression is a string, an integer, literal symbol or the result
/// of invoking a constant constructor of class Symbol.
/// @description Checks that it is a compile-time error if class C implements
/// operator ==.
/// @author kaigorodov

class C {
  final int x;
  const C(this.x);
  bool operator ==(C other) {
//              ^
// [analyzer] unspecified
// [cfe] unspecified
    return this.x == other.x;
  }
}

main() {
  const C c1 = const C(1), c2 = const C(2);
  var x = c2;
  var y;

  switch (x) {
//^
// [analyzer] unspecified
    case c1:
//       ^
// [cfe] unspecified
      y = 1;
      break;
    case c2:
//       ^
// [cfe] unspecified
      y = 2;
      break;
  }
}
