// Copyright (c) 2017, 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.

/// Regression tests to ensure that member metadata is not considered by the
/// deferred loading algorithm, unless mirrors are available.
///
/// This test was failing in the past because the deferred-loading algorithm was
/// adding entities to the K-element-map after we had closed the world and we
/// had created the J-element-map.  Later, when we convert the K annotation to
/// its J conterpart, we couldn't find it in the conversion maps because it was
/// added too late.
///
/// If we add support for mirrors in the future, we just need to ensure that
/// such K annotations are discovered during resolution, before the deferred
/// loading phase.

import 'deferred_metadata_lib.dart' deferred as d show foo;

main() async {
  await d.loadLibrary();
  print(d.foo());
}
