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

/// Regression test for mixin overrides (dartbug.com/44636).
///
/// Prior to the fix, B's initializer was accidentally being applied on the
/// overridden definition in C, and as a result, the program would stack
/// overflow.
import 'package:expect/expect.dart';

class A = B with C;

mixin M {}

abstract class B with M {
  Object _test = "a";
}

mixin C on B, M {
  @override
  Object get _test => super._test;

  @override
  set _test(Object value) {
    super._test = value;
  }
}

main() => Expect.equals("a", A()._test);
