// 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.
// VMOptions=--optimization-counter-threshold=10 --no-background-compilation

import "package:expect/expect.dart";

main() {
  // Trigger optimization of 'test' method.
  for (int i = 0; i < 20; 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]);
}
