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

// @dart = 2.9

/// @assertion const DeferredLibrary(String libraryName, {String uri})
/// (from #11507: Lazy library loading is a hint to deployment tools.
///  The VM is free to ignore this metadata.)
/// @description Checks that DeferredLibrary loads in lazy way.
/// @author kaigorodov
/// @todo move from LibTest to Language


import "../../../Utils/expect.dart";

import 'DeferredLibrary_A01_t01.lib.dart' deferred as lazy;

void main() {
  try {
    lazy.method(); // foo is not loaded yet.
//    Expect.fail("NoSuchMethodError expected"); -- #11507: do not insist on lazy loading
  } on NoSuchMethodError  catch(ok) {
  }
  asyncStart();
  lazy.loadLibrary().then(onFooLoaded);
}

void onFooLoaded(_) {
  String name=lazy.method();
  Expect.equals('DeferredLibrary_A01_t01.lib', name);
  asyncEnd();
}
