// Copyright (c) 2013, 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 we cannot reflect on elements not covered by the `MirrorsUsed`
// annotation.

library test;

@MirrorsUsed(targets: 'foo')
import 'dart:mirrors';

import 'package:expect/expect.dart';

import '../../language/compiler_annotations.dart';

foo() => 1;

@NoInline()
// Use a closure to prevent inlining until the annotation is implemented.
bar() => () => 2;

main() {
  bar(); // Call bar, so it is included in the program.

  var lm = currentMirrorSystem().findLibrary(const Symbol('test'));
  Expect.equals(1, lm.invoke(const Symbol('foo'), []).reflectee);
  Expect.throws(() => lm.invoke(const Symbol('bar'), []));
}
