blob: 0e5bcc85d5a614d13e63429a5da7e77fc84bdf40 [file] [log] [blame]
// 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;
@MirrorsUsed(targets: "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");
}
main() {
// Top level functions should be static.
var closureMirror = reflect(doNothing42);
checkKinds(closureMirror.function, [true, false, false, false, false]);
var libraryMirror = reflectClass(C).owner;
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]);
}