OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 // Test that the return type of a method is being registered for both |
| 6 // its bailout and optimized version in dart2js. |
| 7 |
| 8 var a; |
| 9 |
| 10 bar() { |
| 11 if (a[0] == 0) { |
| 12 // Force bailout version. |
| 13 bar(); |
| 14 // Avoid inlining. |
| 15 throw 0; |
| 16 } |
| 17 for (int i = 0; i < 10; i++) { |
| 18 a[0] = 42; |
| 19 } |
| 20 // This return should say that bar can return an array or unknown. |
| 21 return a; |
| 22 } |
| 23 |
| 24 foo() { |
| 25 if (a[0] == 0) { |
| 26 // Avoid inlining. |
| 27 throw 0; |
| 28 } |
| 29 var a = bar(); |
| 30 // This check used to fail because dart2js was assuming [a] was an |
| 31 // array. |
| 32 Expect.equals(1, a.length); |
| 33 } |
| 34 |
| 35 main() { |
| 36 a = new Map(); |
| 37 bar(); |
| 38 foo(); |
| 39 } |
OLD | NEW |