Chromium Code Reviews| Index: tests/lib/mirrors/typevariable_mirror_metadata_test.dart |
| diff --git a/tests/lib/mirrors/typevariable_mirror_metadata_test.dart b/tests/lib/mirrors/typevariable_mirror_metadata_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..737102c6876f33d5c27e9f1da0c024769870ce28 |
| --- /dev/null |
| +++ b/tests/lib/mirrors/typevariable_mirror_metadata_test.dart |
| @@ -0,0 +1,48 @@ |
| +// 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 test.typevariable_metadata_test; |
| + |
| +import "dart:mirrors"; |
| + |
| +import "metadata_test.dart"; |
| + |
| +const m1 = 'm1'; |
| +const m2 = const Symbol('m2'); |
| +const m3 = 3; |
| + |
| +class A <S, @m1 @m2 T> { |
| + // TODO(rmacknak): Remove this once the name collision is prohibited by the |
| + // compiler/runtime. |
| + @m3 |
| + T() => null; |
| +} |
| + |
| +class B <@m3 T> { |
| + // TODO(rmacknak): Remove this once the name collision is prohibited by the |
| + // compiler/runtime. |
|
siva
2013/09/14 00:58:41
Make an issue for these TODOs and use the issue nu
Michael Lippautz (Google)
2013/09/16 16:44:35
Done.
|
| + @m1 |
| + @m2 |
| + var T; |
| +} |
| + |
| +typedef bool Predicate<@m1 @m2 G>(G a); |
| + |
| +main() { |
| + ClassMirror cm; |
| + cm = reflectClass(A); |
| + checkMetadata(cm.typeVariables[const Symbol('S')], []); |
| + checkMetadata(cm.typeVariables[const Symbol('T')], [m1, m2]); |
| + // Check for conflicts. |
| + checkMetadata(cm.methods[const Symbol('T')], [m3]); |
| + |
| + cm = reflectClass(B); |
| + checkMetadata(cm.typeVariables[const Symbol('T')], [m3]); |
| + // Check for conflicts. |
| + checkMetadata(cm.members[const Symbol('T')], [m1, m2]); |
| + |
| + TypedefMirror tm = reflectClass(Predicate); |
| + FunctionTypeMirror ftm = tm.referent; |
| + checkMetadata(ftm.typeVariables[const Symbol('G')], [m1, m2]); |
| +} |