// Copyright (c) 2011, 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.

import 'compiler_helper.dart';

const String TEST_ONE = r"""
foo(j) {
  var a = [1, 2, 3];
  for (var i = j; i < 3; i++) {
    a[i];
  }
}
""";

main() {
  String generated = compile(TEST_ONE, entry: 'foo');

  // Test for absence of an illegal argument exception. This means that the
  // arguments are known to be integers.
  Expect.isFalse(generated.contains('iae'));
  // Also make sure that we are not just in bailout mode without speculative
  // types by grepping for the integer-bailout check on argument j.
  var argname =
      new RegExp(r'function(?: [a-z]+)?\(([a-zA-Z0-9_]+)\)').firstMatch(generated)[1];
  print(argname);
  RegExp regexp = new RegExp(getIntTypeCheck(argname));
  Expect.isTrue(regexp.hasMatch(generated));
}
