OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 import "package:expect/expect.dart"; | |
6 | |
7 // Test that a call to a bailout method in dart2js resolves to the | |
8 // right method. | |
9 | |
10 var reachedAfoo = new C(); | |
11 | |
12 class A { | |
13 foo() { | |
14 // Using '++' makes sure there is a type guard. | |
15 reachedAfoo++; | |
16 } | |
17 } | |
18 | |
19 class B extends A { | |
20 foo() { | |
21 reachedAfoo++; | |
22 // Call the Expect method after the type guard. | |
23 Expect.fail('Should never reach B.foo'); | |
24 } | |
25 | |
26 bar() { | |
27 super.foo(); | |
28 } | |
29 } | |
30 | |
31 class C { | |
32 int value = 0; | |
33 operator +(val) { | |
34 value += val; | |
35 return this; | |
36 } | |
37 } | |
38 | |
39 main() { | |
40 // Using a loop makes sure the 'foo' methods will have an optimized | |
41 // version. | |
42 while (reachedAfoo.value != 0) { | |
43 new A().foo(); | |
44 new B().foo(); | |
45 } | |
46 new B().bar(); | |
47 Expect.equals(1, reachedAfoo.value); | |
48 } | |
OLD | NEW |