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"; | |
6 | |
7 // Regression test for dart2js, where the optimizer was too agressive | 5 // Regression test for dart2js, where the optimizer was too agressive |
8 // about parameter types of closures. | 6 // about parameter types of closures. |
9 | 7 |
10 class A { | 8 class A { |
11 Function f; | 9 Function f; |
12 A(this.f); | 10 A(this.f); |
13 _do() => f(1); | 11 _do() => f(1); |
14 } | 12 } |
15 | 13 |
16 main() { | 14 main() { |
17 int invokeCount = 0; | 15 int invokeCount = 0; |
18 closure(a) { | 16 closure(a) { |
19 if (invokeCount++ == 1) { | 17 if (invokeCount++ == 1) { |
20 Expect.isTrue(a is int); | 18 Expect.isTrue(a is int); |
21 } | 19 } |
22 } | 20 } |
23 closure('s'); | 21 closure('s'); |
24 new A(closure)._do(); | 22 new A(closure)._do(); |
25 Expect.equals(2, invokeCount); | 23 Expect.equals(2, invokeCount); |
26 } | 24 } |
OLD | NEW |