dart-sdk/tests/language/bailout_test.dart
Bob Nystrom 14011f47e3 Resurrect deleted language tests.
They're back from the grave, and ready to party!

Change-Id: I088134a9be7ecabf1fbf751c015a656a15cabff9
Reviewed-on: https://dart-review.googlesource.com/12821
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Reviewed-by: William Hesse <whesse@google.com>
2017-10-11 17:47:11 +00:00

49 lines
968 B
Dart

// 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.
import "package:expect/expect.dart";
// 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');
}
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(1, reachedAfoo.value);
}