Files
sdk/tests/language_2/mixin_interface_check_test.dart
T
Aske Simon Christensen d3bd06d4e8 Check class interface requirements using override check code.
When a member in the interface of a non-abstract class is found to
have an implementation with the correct name which does not override
the representative declaration of the member in the interface (and thus
has not been checked against that member for override validity), call
the override check to check interface validity.

Override relations thus checked produce an extra context message
explaining that the override relation must hold because both members
are inherited by a non-abstract class.

Fixes https://github.com/dart-lang/sdk/issues/32014

Change-Id: I955f057e35fa30f33c19da37c9cea1262042431c
Reviewed-on: https://dart-review.googlesource.com/c/74642
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-10-03 14:56:43 +00:00

31 lines
581 B
Dart

// 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.
class Thing {}
class SubThing extends Thing {
void sub() {}
}
class A {
Thing get thing => new Thing();
}
abstract class B implements A {
@override
SubThing get thing;
}
class C extends A //
with //# mixin: compile-time error
B //# mixin: continued
{}
main() {
new C()
.thing //
.sub() //# mixin: continued
;
}