library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/mixin_interface_conflict.dart:13:7: Error: Class 'B with C' inherits multiple members named 'n' with incompatible signatures.
// Try adding a declaration of 'n' to 'B with C'.
// mixin M on B, C {}
//       ^^^^^^
// pkg/front_end/testcases/general/mixin_interface_conflict.dart:6:11: Context: This is one of the inherited members.
//   int get n => 1;
//           ^
// pkg/front_end/testcases/general/mixin_interface_conflict.dart:10:14: Context: This is one of the inherited members.
//   double get n => 2.0;
//              ^
//
import self as self;
import "dart:core" as core;

class B extends core::Object {
  synthetic constructor •() → self::B*
    : super core::Object::•()
    ;
  get n() → core::int*
    return 1;
}
class C extends core::Object {
  synthetic constructor •() → self::C*
    : super core::Object::•()
    ;
  get n() → core::double*
    return 2.0;
}
abstract class _M&B&C extends core::Object implements self::B, self::C /*isAnonymousMixin*/  {
  synthetic constructor •() → self::_M&B&C*
    : super core::Object::•()
    ;
}
abstract class M extends self::_M&B&C /*isMixinDeclaration*/  {
}
static method main() → dynamic {}
