| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 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 | 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 'compiler_helper.dart'; | 5 import 'compiler_helper.dart'; |
| 6 | 6 |
| 7 const String TEST_ONE = r""" | 7 const String TEST_ONE = r""" |
| 8 void foo(bar) { | 8 void foo(bar) { |
| 9 for (int i = 0; i < 1; i++) { | 9 for (int i = 0; i < 1; i++) { |
| 10 print(1 + bar); | 10 print(1 + bar); |
| 11 print(1 + bar); | 11 print(1 + bar); |
| 12 } | 12 } |
| 13 } | 13 } |
| 14 """; | 14 """; |
| 15 | 15 |
| 16 // Check that modulo does not have any side effect and we are |
| 17 // GVN'ing the length of [:list:]. |
| 18 const String TEST_TWO = r""" |
| 19 void foo(a) { |
| 20 var list = new List<int>(); |
| 21 list[0] = list[0 % a]; |
| 22 list[1] = list[1 % a]; |
| 23 } |
| 24 """; |
| 25 |
| 16 main() { | 26 main() { |
| 17 String generated = compile(TEST_ONE, entry: 'foo'); | 27 String generated = compile(TEST_ONE, entry: 'foo'); |
| 18 RegExp regexp = new RegExp(r"1 \+ [a-z]+"); | 28 RegExp regexp = new RegExp(r"1 \+ [a-z]+"); |
| 19 Iterator matches = regexp.allMatches(generated).iterator; | 29 checkNumberOfMatches(regexp.allMatches(generated).iterator, 1); |
| 20 Expect.isTrue(matches.moveNext()); | 30 |
| 21 Expect.isFalse(matches.moveNext()); | 31 generated = compile(TEST_TWO, entry: 'foo'); |
| 32 checkNumberOfMatches(new RegExp("length").allMatches(generated).iterator, 1); |
| 22 } | 33 } |
| OLD | NEW |