// 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 static functions are closurized as expected.

import "package:expect/expect.dart";
import "package:async_helper/async_helper.dart";
import 'compiler_helper.dart';

main() {
  asyncTest(() => compileAll(r'''main() { print(main); }''').then((code) {
        // At some point, we will have to closurize global functions
        // differently, at which point this test will break. Then it is time
        // to implement a way to call a Dart closure from JS foreign
        // functions.

        // If this test fail, please take a look at the use of
        // toStringWrapper in captureStackTrace in js_helper.dart.
        Expect.isTrue(
            code.contains(
                new RegExp(r'print\([$A-Z]+\.lib___main\$closure\(\)\);')),
            code);
      }));
}
