blob: 3cb4721804911d2a528d252d43134cdc0bd4f7d7 [file] [log] [blame]
// Copyright (c) 2014, 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.
// @dart = 2.9
library test.mirrors;
import 'dart:mirrors';
import 'package:expect/expect.dart';
class RemoteClass {
final String name;
const RemoteClass([this.name = "default"]);
}
class A {}
@RemoteClass("ASF")
class B extends A {}
class C extends B {}
void main() {
bool foundB = false;
MirrorSystem mirrorSystem = currentMirrorSystem();
mirrorSystem.libraries.forEach((lk, l) {
l.declarations.forEach((dk, d) {
if (d is ClassMirror) {
d.metadata.forEach((md) {
InstanceMirror metadata = md as InstanceMirror;
// Metadata must not be inherited.
if (metadata.type == reflectClass(RemoteClass)) {
Expect.isFalse(foundB);
Expect.equals(#B, d.simpleName);
foundB = true;
}
});
}
});
});
Expect.isTrue(foundB);
}