// Copyright (c) 2022, 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.

mixin M {
  String toString() => "M";
}

abstract class A {
  String toString() => "A";
}

abstract class B implements Enum {
  String toString() => "B";
}

enum E1 with M {
  element
}

enum E2 with M {
  element;

  String toString() => "E2";
}

enum E3 {
  element;

  String toString() => "E3";
}

enum E4 implements B {
  element
}

enum E5 implements B {
  element;

  String toString() => "E5";
}

enum E6 with A {
  element
}

enum E7 with A {
  element;

  String toString() => "E7";
}

checkEqual(x, y) {
  if (x != y) {
    throw "Expected '${x}' and '${y}' to be equal.";
  }
}

main() {
  checkEqual("${E1.element}", "M");
  checkEqual("${E2.element}", "E2");
  checkEqual("${E3.element}", "E3");
  checkEqual("${E4.element}", "E4.element");
  checkEqual("${E5.element}", "E5");
  checkEqual("${E6.element}", "A");
  checkEqual("${E7.element}", "E7");
}
