// 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.
// Based on dartbug.com/7681
// Verify that context chains do not lead to unintended memory being held.

library closure_cycles_test;

import "dart:async";

class X {
  Function onX;
  X() { new Timer(0, (_) => onX(new Y())); }
}

class Y {
  Function onY;
  var heavyMemory;
  static var count = 0;
  Y() {
    // Consume large amounts of memory per iteration to fail/succeed quicker.
    heavyMemory = new List(10*1024*1024);
    // Terminate the test if we allocated enough memory without running out.
    if (count++ > 100) return;
    new Timer(0, (_) => onY());
  }
}

void doIt() {
  var x = new X();
  x.onX = (y) {
    y.onY = () {
      y;  // Capturing y can lead to endless context chains!
      doIt();
    };
  };
}

void main() {
  doIt();
}
