// 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. library lib; import "dart:mirrors"; import "package:expect/expect.dart"; doNothing42() {} int _x = 5; int get topGetter => _x; void set topSetter(x) { _x = x; } abstract class AbstractC { AbstractC(); void bar(); get priv; set priv(value); } abstract class C extends AbstractC { static foo() {} C(); C.other(); C.other2() : this.other(); var _priv; get priv => _priv; set priv(value) => _priv = value; } checkKinds(method, kinds) { Expect.equals(kinds[0], method.isStatic, "isStatic"); Expect.equals(kinds[1], method.isAbstract, "isAbstract"); Expect.equals(kinds[2], method.isGetter, "isGetter"); Expect.equals(kinds[3], method.isSetter, "isSetter"); Expect.equals(kinds[4], method.isConstructor, "isConstructor"); Expect.equals(false, method.isExtensionMember, "isExtension"); } main() { // Top level functions should be static. var closureMirror = reflect(doNothing42) as ClosureMirror; checkKinds(closureMirror.function, [true, false, false, false, false]); var libraryMirror = reflectClass(C).owner as LibraryMirror; checkKinds(libraryMirror.declarations[#topGetter], [true, false, true, false, false]); checkKinds(libraryMirror.declarations[const Symbol("topSetter=")], [true, false, false, true, false]); var classMirror; classMirror = reflectClass(C); checkKinds( classMirror.declarations[#foo], [true, false, false, false, false]); checkKinds( classMirror.declarations[#priv], [false, false, true, false, false]); checkKinds(classMirror.declarations[const Symbol("priv=")], [false, false, false, true, false]); checkKinds(classMirror.declarations[#C], [false, false, false, false, true]); checkKinds( classMirror.declarations[#C.other], [false, false, false, false, true]); checkKinds( classMirror.declarations[#C.other2], [false, false, false, false, true]); classMirror = reflectClass(AbstractC); checkKinds( classMirror.declarations[#AbstractC], [false, false, false, false, true]); checkKinds( classMirror.declarations[#bar], [false, true, false, false, false]); checkKinds( classMirror.declarations[#priv], [false, true, true, false, false]); checkKinds(classMirror.declarations[const Symbol("priv=")], [false, true, false, true, false]); }