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

library test;

import 'package:expect/expect.dart';

@MirrorsUsed(targets: "Foo")
import 'dart:mirrors';

typedef int Foo(String x);
typedef int Bar();

main() {
  LibraryMirror thisLibrary = currentMirrorSystem().findLibrary(#test);

  Mirror fooMirror = thisLibrary.declarations[#Foo];

  Expect.isTrue(fooMirror != null, 'Foo not found.');
  Expect.isTrue(thisLibrary.declarations[#Foo] is TypedefMirror,
      'TypedefMirror expected, found $fooMirror');

  // The following code does not currently work on the VM, because it does not
  // support MirrorsUsed (see dartbug.com/16048).
  Mirror barMirror = thisLibrary.declarations[#Bar]; //             //# 01: ok
  Expect.isTrue(barMirror == null, //                               //# 01: continued
                'Bar should not be emitted due to MirrorsUsed.'); //# 01: continued
}
