Chromium Code Reviews| Index: tests/language/mixin_illegal_super_use_test.dart |
| diff --git a/tests/language/mixin_illegal_super_use_test.dart b/tests/language/mixin_illegal_super_use_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7aac4c06bb378340ed2c0883fef2546dce1d0ea3 |
| --- /dev/null |
| +++ b/tests/language/mixin_illegal_super_use_test.dart |
| @@ -0,0 +1,69 @@ |
| +// 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. |
| + |
| +class M { |
| +} |
| + |
| +class P0 { |
| + foo() { |
| + super.toString(); /// 01: compile-time error |
|
ahe
2013/01/23 12:32:10
I'd write this as:
super. /// 01: compile-time
|
| + super.foo(); /// 02: compile-time error |
| + super.bar = 100; /// 03: compile-time error |
| + |
| + void inner() { |
| + super.toString(); /// 04: compile-time error |
| + super.foo(); /// 05: compile-time error |
| + super.bar = 100; /// 06: compile-time error |
| + } |
| + inner(); |
| + |
| + (() { |
| + super.toString(); /// 07: compile-time error |
| + super.foo(); /// 08: compile-time error |
| + super.bar = 100; /// 09: compile-time error |
| + })(); |
| + |
| + return 42; |
| + } |
| +} |
| + |
| +class P1 { |
| + bar() { |
| + super.toString(); /// 10: compile-time error |
| + return 87; |
| + } |
| + |
| + // The test method is strategically placed here to try to force the |
| + // P1 class and its bar method to be resolved before resolve 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(); /// 11: compile-time error |
| + return 99; |
| + } |
| +} |
| + |
| +typedef C = Object with M; |
| +typedef D = Object with P0; |
| +typedef E = Object with M, P1; |
| +typedef F = Object with P2, M; |
|
ahe
2013/01/23 12:32:10
I'm not sure you're instantiating classes C-F.
kasperl
2013/01/23 12:42:31
I am. See P1.test.
|
| + |
| +main() { |
| + var p1 = new P1(); |
| + var p2 = new P2(); |
| + Expect.equals(87, p1.bar()); |
| + p1.test(); |
| + Expect.equals(99, p2.baz()); |
| +} |