// 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 that we get rid of duplicate type guards on a field when that
// field is being gvn'ed.

import 'compiler_helper.dart';

const String TEST = r"""
class A {
  var field = 52;
  foo() {
    var a = this.field;
    while (a + 42 == 42);
    // This field get should be GVN'ed
    a = this.field;
    while (a + 87 == 87);
    field = 'bar';
  }
}

main() {
  while (true) new A().foo();
}
""";

main() {
  String generated = compileAll(TEST);
  RegExp regexp = new RegExp('foo\\\$0\\\$bailout');
  Iterator matches = regexp.allMatches(generated).iterator();

  // We check that there is only one call to the bailout method.
  // One match for the call, one for the definition.
  checkNumberOfMatches(matches, 2);
}
