// 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.

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];
  Expet equals(v, c[n]);
}
