// 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);
}
