|  | // 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. | 
|  | // VMOptions=--old_gen_heap_size=50 | 
|  |  | 
|  | // Test that non-capturing closures don't retain unnecessary memory. | 
|  | // It tests that the context of `f` allocated within `bar` not leaking and does | 
|  | // not become the context of empty non-capturing closure allocated inside `foo`. | 
|  | // If failing it crashes with an OOM error. | 
|  |  | 
|  | import "package:expect/expect.dart"; | 
|  |  | 
|  | foo() { | 
|  | return () {}; | 
|  | } | 
|  |  | 
|  | bar(a, b) { | 
|  | f() => [a, b]; | 
|  | return foo(); | 
|  | } | 
|  |  | 
|  | main() { | 
|  | var closure = null; | 
|  | for (var i = 0; i < 100; i++) { | 
|  | closure = bar(closure, new List<dynamic>.filled(1024 * 1024, null)); | 
|  | } | 
|  | Expect.isTrue(closure is Function); | 
|  | } |