OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 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 | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import "package:expect/expect.dart"; | 5 import "package:expect/expect.dart"; |
6 | 6 |
7 // Regression test for dart2js, where the optimizer was too agressive | 7 // Regression test for dart2js, where the optimizer was too agressive |
8 // about parameter types of closures. | 8 // about parameter types of closures. |
9 | 9 |
10 class A { | 10 class A { |
11 Function f; | 11 Function f; |
12 A(this.f); | 12 A(this.f); |
13 _do() => f(1); | 13 _do() => f(1); |
14 } | 14 } |
15 | 15 |
16 main() { | 16 main() { |
17 int invokeCount = 0; | 17 int invokeCount = 0; |
18 closure(a) { | 18 closure(a) { |
19 if (invokeCount++ == 1) { | 19 if (invokeCount++ == 1) { |
20 Expect.isTrue(a is int); | 20 Expect.isTrue(a is int); |
21 } | 21 } |
22 } | 22 } |
| 23 |
23 closure('s'); | 24 closure('s'); |
24 new A(closure)._do(); | 25 new A(closure)._do(); |
25 Expect.equals(2, invokeCount); | 26 Expect.equals(2, invokeCount); |
26 } | 27 } |
OLD | NEW |