Chromium Code Reviews| Index: tests/language/bailout_test.dart |
| =================================================================== |
| --- tests/language/bailout_test.dart (revision 0) |
| +++ tests/language/bailout_test.dart (revision 0) |
| @@ -0,0 +1,46 @@ |
| +// Copyright (c) 2012, 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. |
| + |
| +// Test that a call to a bailout method in dart2js resolves to the |
| +// right method. |
| + |
| +var reachedAfoo = new C(); |
| + |
| +class A { |
| + foo() { |
| + // Using '++' makes sure there is a type guard. |
| + reachedAfoo++; |
| + } |
| +} |
| + |
| +class B extends A { |
| + foo() { |
| + reachedAfoo++; |
| + // Call the Expect method after the type guard. |
| + Expect.fail('Should never reach B.foo'); |
|
ahe
2012/11/15 11:50:51
Is there are a reason for not just throwing an exc
ngeoffray
2012/11/15 12:26:11
Not sure, I'm using what other tests seem to be do
|
| + } |
| + |
| + bar() { |
| + super.foo(); |
| + } |
| +} |
| + |
| +class C { |
| + int value = 0; |
| + operator +(val) { |
| + value += val; |
| + return this; |
| + } |
| +} |
| + |
| +main() { |
| + // Using a loop makes sure the 'foo' methods will have an optimized |
| + // version. |
| + while (reachedAfoo.value != 0) { |
| + new A().foo(); |
| + new B().foo(); |
| + } |
| + new B().bar(); |
| + Expect.equals(reachedAfoo.value, 1); |
|
ahe
2012/11/15 11:50:51
Swap order of arguments. The method is declared a
ngeoffray
2012/11/15 12:26:11
Done.
|
| +} |