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 |