| 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 // This test triggered an NPE in dart2js. |
| 6 // The bug needed: |
| 7 // - double usage of the same variable in one expression ("b != b"). |
| 8 // - replacement of "b" with "typechecked b". |
| 9 // - ... |
| 10 // The example below is minimal (as far as I was able to do). |
| 11 |
| 12 num foo(num a, num b) { |
| 13 if (a > b) return b; |
| 14 if (b is double) { |
| 15 if (true) { |
| 16 if (true) { |
| 17 return (a + b) * a * b; |
| 18 } |
| 19 } |
| 20 // Check for NaN and b == -0.0. |
| 21 if (a == 0 && b == 0 || b != b) return b; |
| 22 } |
| 23 } |
| 24 |
| 25 main() { |
| 26 Expect.equals(1, foo(2, 1)); |
| 27 } |
| OLD | NEW |