| Index: test/codegen/lib/mirrors/generic_type_mirror_test.dart
|
| diff --git a/test/codegen/lib/mirrors/generic_type_mirror_test.dart b/test/codegen/lib/mirrors/generic_type_mirror_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e48892f6b8bde2f3b58c95adf8b0bd941b407125
|
| --- /dev/null
|
| +++ b/test/codegen/lib/mirrors/generic_type_mirror_test.dart
|
| @@ -0,0 +1,90 @@
|
| +// 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.
|
| +
|
| +import "dart:mirrors";
|
| +import "package:expect/expect.dart";
|
| +
|
| +class Foo<W, V> {
|
| + V field;
|
| + V get bar => field;
|
| + set bar(V v) {}
|
| + W m() {}
|
| + V n() {}
|
| + H<V> p() {}
|
| + o(W w) {}
|
| +}
|
| +class H<T> {}
|
| +class Bar {}
|
| +class Baz {}
|
| +
|
| +void testInstance() {
|
| + ClassMirror foo = reflect((new Foo<Bar, Baz>())).type;
|
| + ClassMirror bar = reflect(new Bar()).type;
|
| + ClassMirror baz = reflect(new Baz()).type;
|
| + ClassMirror hOfBaz = reflect(new H<Baz>()).type;
|
| + VariableMirror field = foo.declarations[#field];
|
| + MethodMirror getter = foo.declarations[#bar];
|
| + MethodMirror setter = foo.declarations[const Symbol('bar=')];
|
| + MethodMirror m = foo.declarations[#m];
|
| + MethodMirror n = foo.declarations[#n];
|
| + MethodMirror o = foo.declarations[#o];
|
| + MethodMirror p = foo.declarations[#p];
|
| +
|
| + Expect.equals(foo, field.owner);
|
| + Expect.equals(foo, getter.owner);
|
| + Expect.equals(foo, setter.owner);
|
| + Expect.equals(foo, m.owner);
|
| + Expect.equals(foo, n.owner);
|
| + Expect.equals(foo, o.owner);
|
| + Expect.equals(foo, p.owner);
|
| +
|
| + Expect.equals(baz, field.type);
|
| + Expect.equals(baz, getter.returnType);
|
| + Expect.equals(bar, m.returnType);
|
| + Expect.equals(baz, n.returnType);
|
| + Expect.equals(bar, o.parameters.single.type);
|
| + Expect.equals(hOfBaz, p.returnType);
|
| + Expect.equals(1, p.returnType.typeArguments.length);
|
| + Expect.equals(baz, p.returnType.typeArguments[0]);
|
| +
|
| + Expect.equals(baz, setter.parameters.single.type);
|
| +
|
| +}
|
| +
|
| +void testOriginalDeclaration() {
|
| + ClassMirror foo = reflectClass(Foo);
|
| +
|
| + VariableMirror field = foo.declarations[#field];
|
| + MethodMirror getter = foo.declarations[#bar];
|
| + MethodMirror setter = foo.declarations[const Symbol('bar=')];
|
| + MethodMirror m = foo.declarations[#m];
|
| + MethodMirror n = foo.declarations[#n];
|
| + MethodMirror o = foo.declarations[#o];
|
| + MethodMirror p = foo.declarations[#p];
|
| + TypeVariableMirror w = foo.typeVariables[0];
|
| + TypeVariableMirror v = foo.typeVariables[1];
|
| +
|
| + Expect.equals(foo, field.owner);
|
| + Expect.equals(foo, getter.owner);
|
| + Expect.equals(foo, setter.owner);
|
| + Expect.equals(foo, m.owner);
|
| + Expect.equals(foo, n.owner);
|
| + Expect.equals(foo, o.owner);
|
| + Expect.equals(foo, p.owner);
|
| +
|
| + Expect.equals(v, field.type);
|
| + Expect.equals(v, getter.returnType);
|
| + Expect.equals(w, m.returnType);
|
| + Expect.equals(v, n.returnType);
|
| + Expect.equals(w, o.parameters.single.type);
|
| + Expect.equals(1, p.returnType.typeArguments.length);
|
| + Expect.equals(v, p.returnType.typeArguments[0]);
|
| +
|
| + Expect.equals(v, setter.parameters.single.type);
|
| +}
|
| +
|
| +main() {
|
| + testInstance();
|
| + testOriginalDeclaration();
|
| +}
|
|
|