Files
sdk/tests/language/optimize/bailout_test.dart
Robert Nystrom c959c9aba7 Migrate language_2/optimize to NNBD.
Change-Id: I3f67dd79ff2ee745cc2ea161ce7150630e805c97
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/150186
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
2020-06-06 01:42:35 +00:00

49 lines
972 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 +(int 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);
}