blob: 3ec152f1446c4391d0a831e44acdb9382d81ff28 [file] [log] [blame]
// Copyright (c) 2018, 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.6
import 'dart:mirrors';
const _FailingTest failingTest = const _FailingTest();
class _FailingTest {
const _FailingTest();
}
class MyTest {
@failingTest
void foo() {}
}
class MyTest2 extends Object with MyTest {}
main() {
ClassMirror classMirror = reflectClass(MyTest2);
classMirror.instanceMembers
.forEach((Symbol symbol, MethodMirror memberMirror) {
if (memberMirror.simpleName == #foo) {
print(memberMirror);
print(_hasFailingTestAnnotation(memberMirror));
}
});
}
bool _hasFailingTestAnnotation(MethodMirror method) {
var r = _hasAnnotationInstance(method, failingTest);
print('[_hasFailingTestAnnotation] $method $r');
return r;
}
bool _hasAnnotationInstance(DeclarationMirror declaration, instance) =>
declaration.metadata.any((InstanceMirror annotation) {
print('annotation: ${annotation.reflectee}');
return identical(annotation.reflectee, instance);
});