|  | // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  | // Test program for correct optimizations related to types fo allocated lists. | 
|  |  | 
|  | import "package:expect/expect.dart"; | 
|  |  | 
|  | main() { | 
|  | // Trigger optimization of 'test' method. | 
|  | for (int i = 0; i < 1000; i++) { | 
|  | test(2); | 
|  | } | 
|  | } | 
|  |  | 
|  |  | 
|  | test(n) { | 
|  | var a = new List();    // Growable list. | 
|  | var b = new List(10);  // Fixed size list. | 
|  | var c = const [1, 2, 3, 4];  // Constant aray. | 
|  | // In optimized mode the class checks will be eliminated since the | 
|  | // constructors above provide information about exact types. | 
|  | a.add(4); | 
|  | b[0] = 5; | 
|  | Expect.equals(4, a[0]); | 
|  | Expect.equals(5, b[0]); | 
|  | // Test bound check elimination. | 
|  | Expect.equals(2, c[1]); | 
|  | // Test elimination of array length computation. | 
|  | var v = c[n]; | 
|  | Expect.equals(v, c[n]); | 
|  | } |