Chromium Code Reviews| Index: tests/lib/mirrors/inherited_metadata_test.dart |
| diff --git a/tests/lib/mirrors/inherited_metadata_test.dart b/tests/lib/mirrors/inherited_metadata_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..6d6c4b30520f3f6fc70b8b89cae01ff34325691b |
| --- /dev/null |
| +++ b/tests/lib/mirrors/inherited_metadata_test.dart |
| @@ -0,0 +1,52 @@ |
| +// 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. |
| + |
| +library test.mirrors; |
| + |
| +@MirrorsUsed(targets: "test.mirrors") |
| +import 'dart:mirrors'; |
| + |
| +import 'package:expect/expect.dart'; |
| + |
| + |
| +class RemoteClass { |
| + final String name; |
| + const RemoteClass([this.name]); |
| +} |
| + |
| +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) { |
| + ClassMirror cm = d as ClassMirror; |
|
karlklose
2014/08/12 12:22:34
You should not need to case d here.
|
| + cm.metadata.forEach((md) { |
| + InstanceMirror metadata = md as InstanceMirror; |
| + // Metadata must not be inherited. |
| + if(metadata.type == reflectClass(RemoteClass) ) { |
|
karlklose
2014/08/12 12:22:34
Remove space after '...eClass)'.
|
| + Expect.isFalse(foundB); |
| + Expect.equals(#B, cm.simpleName); |
| + foundB = true; |
| + } |
| + }); |
| + } |
| + }); |
| + }); |
| + |
| + Expect.isTrue(foundB); |
| +} |
| + |