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

// This is a regression test for http://dartbug.com/23054

library index;

import 'dart:mirrors';

import 'package:expect/expect.dart';

main() {
  var bar = new Bar();
  var barMirror = reflect(bar);
  Expect.equals(42, barMirror.getField(#bar).reflectee, "bar field");
  Expect.equals(42, barMirror.invoke(#getBar, []).reflectee, "getBar Method");

  var foo = new Foo();
  var fooMirror = reflect(foo);
  Expect.equals(9, fooMirror.getField(#foo).reflectee, "foo field");
  Expect.equals(9, fooMirror.invoke(#getFoo, []).reflectee, "getFoo Method");
}

class Bar {
  int bar = 42;

  int getBar() => bar;
}

class Foo {
  int foo = 9;

  int getFoo() => foo;
}
