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 // Test that parameters keep their names in the output. | |
5 | |
6 #import("compiler_helper.dart"); | |
7 #import("parser_helper.dart"); | |
8 | |
9 final String TEST_INVOCATION0 = @""" | |
10 main() { | |
11 var o = null; | |
12 o(); | |
13 } | |
14 """; | |
15 | |
16 final String TEST_INVOCATION1 = @""" | |
17 main() { | |
18 var o = null; | |
19 o(1); | |
20 } | |
21 """; | |
22 | |
23 final String TEST_INVOCATION2 = @""" | |
24 main() { | |
25 var o = null; | |
26 o(1, 2); | |
27 } | |
28 """; | |
29 | |
30 final String TEST_BAILOUT = @""" | |
31 class A { | |
32 var x; | |
33 foo() { | |
34 var f = function g() { return 499; }; | |
35 return 499 + x + f(); | |
36 } | |
37 } | |
38 | |
39 main() { new A().foo(); } | |
40 """; | |
41 | |
42 closureInvocation() { | |
43 String generated = compile(TEST_INVOCATION0); | |
44 Expect.isTrue(generated.contains(".\$call\$0()")); | |
45 generated = compile(TEST_INVOCATION1); | |
46 Expect.isTrue(generated.contains(@".$call$1(1)")); | |
47 generated = compile(TEST_INVOCATION2); | |
48 Expect.isTrue(generated.contains(@".$call$2(1, 2)")); | |
49 } | |
50 | |
51 // Make sure that the bailout version does not introduce a second version of | |
52 // the closure. | |
53 closureBailout() { | |
54 String generated = compileAll(TEST_BAILOUT); | |
55 RegExp regexp = const RegExp(@'\$call\$0: function'); | |
56 Iterator<Match> matches = regexp.allMatches(generated).iterator(); | |
57 checkNumberOfMatches(matches, 1); | |
58 } | |
59 | |
60 main() { | |
61 closureInvocation(); | |
62 closureBailout(); | |
63 } | |
OLD | NEW |