blob: bbae61ad3a41c09ae5ba0b3f143a001e8db59f7b [file] [log] [blame]
// 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 program for correct optimizations related to types fo allocated lists.
// VMOptions=--optimization-counter-threshold=10 --no-use-osr
import "package:expect/expect.dart";
// Classes to induce polymorphism of degree 10.
class A0 {
test() => 0;
}
class A1 {
test() => 1;
}
class A2 {
test() => 2;
}
class A3 {
test() => 3;
}
class A4 {
test() => 4;
}
class A5 {
test() => 5;
}
class A6 {
test() => 6;
}
class A7 {
test() => 7;
}
class A8 {
test() => 8;
}
class A9 {
test() => 9;
}
// Class with no test method.
class B {}
test(obj) {
return obj.test();
}
main() {
// Trigger optimization of 'test' function.
List list = [
new A0(),
new A1(),
new A2(),
new A3(),
new A4(),
new A5(),
new A6(),
new A7(),
new A8(),
new A9()
];
for (int i = 0; i < 20; i++) {
for (var obj in list) {
test(obj);
}
}
Expect.throwsNoSuchMethodError(() => test(new B()));
}