| // 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.9 |
| 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); |
| }); |