// 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.

closure0() {
  var f = fib(i) {
    if (i < 2) return i;
    return fib(i - 1) + fib(i - 2);
  };
  Expect.equals(5, f(5));
}

closure1() {
  var decr1 = 0;
  var decr2 = 0;
  var f = fib(i) {
    if (i < 2) return i;
    return fib(i - decr1) + fib(i - decr2);
  };
  decr1++;
  decr2 += 2;
  Expect.equals(5, f(5));
}

closure2() {
  var f = fun(doReturnClosure) {
    if (doReturnClosure) {
      return inner() => fun(false);
    } else {
      return 499;
    }
  };
  var g = f(true);
  Expect.equals(499, g());
}

main() {
  closure0();
  closure1();
  closure2();
}
