Index: tests/language/megamorphic_no_such_method_test.dart |
diff --git a/tests/language/megamorphic_no_such_method_test.dart b/tests/language/megamorphic_no_such_method_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..56c3287a3b1586ab6200961546eb9de631ca1f57 |
--- /dev/null |
+++ b/tests/language/megamorphic_no_such_method_test.dart |
@@ -0,0 +1,64 @@ |
+// 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. |
+ |
+// 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 < 1000; i++) { |
+ for (var obj in list) { |
+ test(obj); |
+ } |
+ } |
+ Expect.throws(() => test(new B()), (e) => e is NoSuchMethodError); |
+} |