e224540b1c
I would have prefered to have renamed them all to undefined_super_member, but that would have broken existing links. Some day we should add the support necessary to allow for forwarding so that we can rename codes. Change-Id: I81e416407e3464b5b60a4dbbfe60a375eb47bb84 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/157921 Commit-Queue: Brian Wilkerson <brianwilkerson@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
89 lines
2.0 KiB
Dart
89 lines
2.0 KiB
Dart
// Copyright (c) 2013, 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";
|
|
|
|
class M {}
|
|
|
|
class P0 {
|
|
foo() {
|
|
super.toString();
|
|
super.foo();
|
|
// ^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SUPER_MEMBER
|
|
// [cfe] Superclass has no method named 'foo'.
|
|
super.bar = 100;
|
|
// ^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SUPER_MEMBER
|
|
// [cfe] Superclass has no setter named 'bar'.
|
|
|
|
void inner() {
|
|
super.toString();
|
|
super.foo();
|
|
// ^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SUPER_MEMBER
|
|
// [cfe] Superclass has no method named 'foo'.
|
|
super.bar = 100;
|
|
// ^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SUPER_MEMBER
|
|
// [cfe] Superclass has no setter named 'bar'.
|
|
}
|
|
inner();
|
|
|
|
(() {
|
|
super.toString();
|
|
super.foo();
|
|
// ^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SUPER_MEMBER
|
|
// [cfe] Superclass has no method named 'foo'.
|
|
super.bar = 100;
|
|
// ^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.UNDEFINED_SUPER_MEMBER
|
|
// [cfe] Superclass has no setter named 'bar'.
|
|
})();
|
|
|
|
return 42;
|
|
}
|
|
}
|
|
|
|
class P1 {
|
|
bar() {
|
|
super.toString();
|
|
return 87;
|
|
}
|
|
|
|
// The test method is strategically placed here to try to force the
|
|
// P1 class and its bar method to be resolved before resolving the
|
|
// mixin applications.
|
|
test() {
|
|
new C();
|
|
var d = new D();
|
|
var e = new E();
|
|
var f = new F();
|
|
Expect.equals(42, d.foo());
|
|
Expect.equals(87, e.bar());
|
|
Expect.equals(99, f.baz());
|
|
}
|
|
}
|
|
|
|
class P2 {
|
|
baz() {
|
|
super.toString();
|
|
return 99;
|
|
}
|
|
}
|
|
|
|
class C = Object with M;
|
|
class D = Object with P0;
|
|
class E = Object with M, P1;
|
|
class F = Object with P2, M;
|
|
|
|
main() {
|
|
var p1 = new P1();
|
|
var p2 = new P2();
|
|
Expect.equals(87, p1.bar());
|
|
p1.test();
|
|
Expect.equals(99, p2.baz());
|
|
}
|