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

// @dart = 2.9

import "package:expect/expect.dart";

var baz_clicks = 0;

baz() {
  return ++baz_clicks;
}

var global = 0;

increment_global() {
  ++global;
  return global <= 10;
}

foo(x, y) {
  var n = 0;
  while (true) {
    baz();
    if (n >= x) {
      return n;
    }
    baz();
    if (n >= y) {
      return n;
    }
    n = n + 1;
  }
}

bar() {
  while (increment_global()) {
    baz();
  }
  return baz();
}

main() {
  Expect.equals(10, foo(10, 20));
  Expect.equals(10, foo(20, 10));

  baz_clicks = 0;
  Expect.equals(11, bar());
}
