| 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 |
| 5 #import("compiler_helper.dart"); |
| 6 |
| 7 const int REMOVED = 0; |
| 8 const int ABOVE_ZERO = 1; |
| 9 const int BELOW_LENGTH = 2; |
| 10 const int KEPT = 3; |
| 11 |
| 12 final List TESTS = [ |
| 13 """ |
| 14 main() { |
| 15 var a = new List(); |
| 16 var sum = 0; |
| 17 for (int i = 0; i < a.length; i++) { |
| 18 sum += a[i]; |
| 19 } |
| 20 return sum; |
| 21 } |
| 22 """, |
| 23 REMOVED, |
| 24 |
| 25 """ |
| 26 main(value) { |
| 27 var a = new List(); |
| 28 var sum = 0; |
| 29 for (int i = 0; i < value; i++) { |
| 30 sum += a[i]; |
| 31 } |
| 32 return sum; |
| 33 } |
| 34 """, |
| 35 ABOVE_ZERO, |
| 36 |
| 37 """ |
| 38 main(check) { |
| 39 // Make sure value is an int. |
| 40 var value = check ? 42 : 54; |
| 41 var a = new List(value); |
| 42 var sum = 0; |
| 43 for (int i = 0; i < value; i++) { |
| 44 sum += a[i]; |
| 45 } |
| 46 return sum; |
| 47 } |
| 48 """, |
| 49 REMOVED, |
| 50 |
| 51 """ |
| 52 main() { |
| 53 var a = new List(); |
| 54 return a[0]; |
| 55 } |
| 56 """, |
| 57 KEPT, |
| 58 |
| 59 """ |
| 60 main() { |
| 61 var a = new List(); |
| 62 return a.removeLast(); |
| 63 } |
| 64 """, |
| 65 KEPT, |
| 66 |
| 67 """ |
| 68 main() { |
| 69 var a = new List(4); |
| 70 return a[0]; |
| 71 } |
| 72 """, |
| 73 REMOVED, |
| 74 |
| 75 """ |
| 76 main() { |
| 77 var a = new List(4); |
| 78 return a.removeLast(); |
| 79 } |
| 80 """, |
| 81 REMOVED, |
| 82 |
| 83 """ |
| 84 main(value) { |
| 85 var a = new List(value); |
| 86 return a[value]; |
| 87 } |
| 88 """, |
| 89 KEPT, |
| 90 |
| 91 """ |
| 92 main(value) { |
| 93 var a = new List(1024); |
| 94 return a[1023 & value]; |
| 95 } |
| 96 """, |
| 97 REMOVED, |
| 98 |
| 99 """ |
| 100 main(value) { |
| 101 var a = new List(1024); |
| 102 return a[1024 & value]; |
| 103 } |
| 104 """, |
| 105 ABOVE_ZERO |
| 106 ]; |
| 107 |
| 108 expect(String code, int kind) { |
| 109 String generated = compile(code); |
| 110 switch (kind) { |
| 111 case REMOVED: |
| 112 Expect.isTrue(!generated.contains('ioore')); |
| 113 break; |
| 114 |
| 115 case ABOVE_ZERO: |
| 116 Expect.isTrue(!generated.contains('> 0')); |
| 117 break; |
| 118 |
| 119 case BELOW_LENGTH: |
| 120 Expect.isTrue(!generated.contains('||')); |
| 121 break; |
| 122 |
| 123 case KEPT: |
| 124 Expect.isTrue(generated.contains('ioore')); |
| 125 break; |
| 126 } |
| 127 } |
| 128 |
| 129 |
| 130 main() { |
| 131 for (int i = 0; i < TESTS.length; i += 2) { |
| 132 expect(TESTS[i], TESTS[i + 1]); |
| 133 } |
| 134 } |
| OLD | NEW |