| // 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 = #m2; |
| const m3 = 3; |
| |
| class A<S, @m1 @m2 T> {} |
| |
| class B<@m3 T> {} |
| |
| typedef bool Predicate<@m1 @m2 G>(G a); |
| |
| main() { |
| ClassMirror cm; |
| cm = reflectClass(A); |
| checkMetadata(cm.typeVariables[0], []); |
| checkMetadata(cm.typeVariables[1], [m1, m2]); |
| |
| cm = reflectClass(B); |
| checkMetadata(cm.typeVariables[0], [m3]); |
| |
| TypedefMirror tm = reflectType(Predicate) as TypedefMirror; |
| checkMetadata(tm.typeVariables[0], [m1, m2]); |
| FunctionTypeMirror ftm = tm.referent; |
| checkMetadata(ftm, []); |
| } |