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

import 'dart:mirrors';

import 'package:expect/expect.dart';

class Foo<T> {}

class Bar<T> extends Foo<T> {}

main() {
  var fooType = reflectType(Foo);
  var fooDeclaration = fooType.originalDeclaration;
  var barSupertype = reflect(new Bar()).type.superclass;
  var barSuperclass = barSupertype.originalDeclaration;
  Expect.equals(fooDeclaration, barSuperclass, 'declarations');
  Expect.equals(fooType, barSupertype, 'types'); //# 01: ok
}
