blob: ccfde7b5dfa8be7876b6f32dab1eb5771b6dfe03 [file] [log] [blame]
// Copyright (c) 2018, 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.
import "package:expect/expect.dart";
abstract class Bar {
String bar();
}
abstract class Foo {
String foo();
}
mixin M implements Bar {
dynamic noSuchMethod(i) => "M:${i.memberName == #foo ? "foo" : "bar"}";
}
abstract class C {
dynamic noSuchMethod(i) => "C:${i.memberName == #foo ? "foo" : "bar"}";
}
abstract class D {
String foo() => "D:foo";
String bar() => "D:bar";
}
class A1 extends Foo with M {}
class A2 extends C with M implements Foo {}
class A3 extends D with M implements Foo {}
main() {
Expect.equals("M:foo", A1().foo());
Expect.equals("M:bar", A1().bar());
Expect.equals("M:foo", A2().foo());
Expect.equals("M:bar", A2().bar());
Expect.equals("D:foo", A3().foo());
Expect.equals("D:bar", A3().bar());
}