| Index: tests/lib/mirrors/type_variable_owner_test.dart
|
| diff --git a/tests/lib/mirrors/type_variable_owner_test.dart b/tests/lib/mirrors/type_variable_owner_test.dart
|
| index c71e39a909377f7e2f0b48928ca84f5e993182bd..282977d7199c032c5c3dad98e3ae652b1deda3fd 100644
|
| --- a/tests/lib/mirrors/type_variable_owner_test.dart
|
| +++ b/tests/lib/mirrors/type_variable_owner_test.dart
|
| @@ -2,6 +2,9 @@
|
| // 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.
|
|
|
| +// Owner of a type variable should be the declaration of the generic class or
|
| +// typedef, not an instantiation.
|
| +
|
| library test.type_variable_owner;
|
|
|
| import "dart:mirrors";
|
| @@ -11,7 +14,7 @@ import "package:expect/expect.dart";
|
| class A<T> {}
|
| class B<R> extends A<R> {}
|
|
|
| -main() {
|
| +testTypeVariableOfClass() {
|
| ClassMirror aDecl = reflectClass(A);
|
| ClassMirror bDecl = reflectClass(B);
|
| ClassMirror aOfInt = reflect(new A<int>()).type;
|
| @@ -19,9 +22,6 @@ main() {
|
| ClassMirror bOfString = reflect(new B<String>()).type;
|
| ClassMirror aOfString = bOfString.superclass;
|
|
|
| - // Owner of a type variable should be the declaration of the generic class,
|
| - // not an instantiation.
|
| -
|
| Expect.equals(aDecl, aDecl.typeVariables[0].owner);
|
| Expect.equals(aDecl, aOfInt.typeVariables[0].owner);
|
| Expect.equals(aDecl, aOfR.typeVariables[0].owner);
|
| @@ -30,3 +30,25 @@ main() {
|
| Expect.equals(bDecl, bDecl.typeVariables[0].owner);
|
| Expect.equals(bDecl, bOfString.typeVariables[0].owner);
|
| }
|
| +
|
| +typedef bool Predicate<T>(T t);
|
| +Predicate<List> somePredicateOfList;
|
| +
|
| +testTypeVariableOfTypedef() {
|
| + LibraryMirror thisLibrary =
|
| + currentMirrorSystem().findLibrary(#test.type_variable_owner).single;
|
| +
|
| + TypedefMirror predicateOfDynamic = reflectType(Predicate);
|
| + TypedefMirror predicateOfList =
|
| + thisLibrary.variables[#somePredicateOfList].type;
|
| + TypedefMirror predicateDecl = predicateOfList.originalDeclaration;
|
| +
|
| + Expect.equals(predicateDecl, predicateOfDynamic.typeVariables[0].owner);
|
| + Expect.equals(predicateDecl, predicateOfList.typeVariables[0].owner);
|
| + Expect.equals(predicateDecl, predicateDecl.typeVariables[0].owner);
|
| +}
|
| +
|
| +main() {
|
| + testTypeVariableOfClass();
|
| + testTypeVariableOfTypedef(); /// 01: ok
|
| +}
|
|
|