blob: 17e4fad47cdf6276dfe51eb1487bcef4425732a1 [file] [log] [blame]
// 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());
}