| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2011, 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 | |
| 8 final String FOO = @""" | |
| 9 void foo(var a, var b) { | |
| 10 } | |
| 11 """; | |
| 12 | |
| 13 | |
| 14 final String BAR = @""" | |
| 15 void bar(var eval, var $eval) { | |
| 16 } | |
| 17 """; | |
| 18 | |
| 19 | |
| 20 final String PARAMETER_AND_TEMP = @""" | |
| 21 void bar(var t0, var b) { | |
| 22 { | |
| 23 var t0 = 2; | |
| 24 if (b) { | |
| 25 t0 = 4; | |
| 26 } else { | |
| 27 t0 = 3; | |
| 28 } | |
| 29 print(t0); | |
| 30 } | |
| 31 print(t0); | |
| 32 } | |
| 33 """; | |
| 34 | |
| 35 final String NO_LOCAL = @""" | |
| 36 foo(bar, baz) { | |
| 37 if (bar) { | |
| 38 baz = 2; | |
| 39 } else { | |
| 40 baz = 3; | |
| 41 } | |
| 42 return baz; | |
| 43 } | |
| 44 """; | |
| 45 | |
| 46 final String MULTIPLE_PHIS_ONE_LOCAL = @""" | |
| 47 foo(param1, param2, param3) { | |
| 48 var a = 2; | |
| 49 if (param1) { | |
| 50 if (param2) { | |
| 51 if (param3) { | |
| 52 a = 42; | |
| 53 } | |
| 54 } | |
| 55 } | |
| 56 return a; | |
| 57 } | |
| 58 """; | |
| 59 | |
| 60 final String PARAMETER_INIT = @""" | |
| 61 int foo(var start, bool test) { | |
| 62 var result = start; | |
| 63 if (test) { | |
| 64 result = 42; | |
| 65 } | |
| 66 return result; | |
| 67 } | |
| 68 """; | |
| 69 | |
| 70 main() { | |
| 71 String generated = compile(FOO, 'foo'); | |
| 72 // TODO(ngeoffray): Use 'contains' when frog supports it. | |
| 73 RegExp regexp = const RegExp(@"function\(a, b\) {"); | |
| 74 Expect.isTrue(regexp.hasMatch(generated)); | |
| 75 | |
| 76 generated = compile(BAR, 'bar'); | |
| 77 regexp = const RegExp(@"function\(eval\$, \$\$eval\) {"); | |
| 78 Expect.isTrue(regexp.hasMatch(generated)); | |
| 79 | |
| 80 generated = compile(PARAMETER_AND_TEMP, 'bar'); | |
| 81 regexp = const RegExp(@"print\(t0\)"); | |
| 82 Expect.isTrue(regexp.hasMatch(generated)); | |
| 83 // Check that the second 't0' got another name. | |
| 84 regexp = const RegExp(@"print\(t0_0\)"); | |
| 85 Expect.isTrue(regexp.hasMatch(generated)); | |
| 86 | |
| 87 generated = compile(NO_LOCAL, 'foo'); | |
| 88 regexp = const RegExp("return baz"); | |
| 89 Expect.isTrue(regexp.hasMatch(generated)); | |
| 90 regexp = const RegExp(@"baz = 2"); | |
| 91 Expect.isTrue(regexp.hasMatch(generated)); | |
| 92 regexp = const RegExp(@"baz = 3"); | |
| 93 Expect.isTrue(regexp.hasMatch(generated)); | |
| 94 regexp = const RegExp("bar === true"); | |
| 95 Expect.isTrue(regexp.hasMatch(generated)); | |
| 96 | |
| 97 generated = compile(MULTIPLE_PHIS_ONE_LOCAL, 'foo'); | |
| 98 regexp = const RegExp(@"var a = 2;"); | |
| 99 Expect.isTrue(regexp.hasMatch(generated)); | |
| 100 | |
| 101 regexp = const RegExp(@"a = 2;"); | |
| 102 Iterator matches = regexp.allMatches(generated).iterator(); | |
| 103 Expect.isTrue(matches.hasNext()); | |
| 104 matches.next(); | |
| 105 Expect.isFalse(matches.hasNext()); | |
| 106 | |
| 107 generated = compile(PARAMETER_INIT, 'foo'); | |
| 108 regexp = const RegExp("var result = start;"); | |
| 109 Expect.isTrue(regexp.hasMatch(generated)); | |
| 110 } | |
| OLD | NEW |