Index: test/codegen/lib/mirrors/new_instance_with_type_arguments_test.dart |
diff --git a/test/codegen/lib/mirrors/new_instance_with_type_arguments_test.dart b/test/codegen/lib/mirrors/new_instance_with_type_arguments_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2885bbbda578e91db8d8999d8f11cd4d69211c5d |
--- /dev/null |
+++ b/test/codegen/lib/mirrors/new_instance_with_type_arguments_test.dart |
@@ -0,0 +1,61 @@ |
+// 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.new_instance_with_type_arguments_test; |
+ |
+import 'dart:mirrors'; |
+ |
+import 'package:expect/expect.dart'; |
+ |
+class A<T> { |
+ Type get t => T; |
+} |
+class B extends A<int> {} |
+class C<S> extends A<num> { |
+ Type get s => S; |
+} |
+ |
+main() { |
+ ClassMirror cmA = reflectClass(A); |
+ ClassMirror cmB = reflectClass(B); |
+ ClassMirror cmC = reflectClass(C); |
+ |
+ var a_int = new A<int>(); |
+ var a_dynamic = new A(); |
+ var b = new B(); |
+ var c_string = new C<String>(); |
+ var c_dynamic = new C(); |
+ |
+ Expect.equals(int, a_int.t); |
+ Expect.equals(dynamic, a_dynamic.t); |
+ Expect.equals(int, b.t); |
+ Expect.equals(num, c_string.t); |
+ Expect.equals(num, c_dynamic.t); |
+ |
+ Expect.equals(String, c_string.s); |
+ Expect.equals(dynamic, c_dynamic.s); |
+ |
+ var reflective_a_int = |
+ cmB.superclass.newInstance(const Symbol(''), []).reflectee; |
+ var reflective_a_dynamic = |
+ cmA.newInstance(const Symbol(''), []).reflectee; |
+ var reflective_b = |
+ cmB.newInstance(const Symbol(''), []).reflectee; |
+ var reflective_c_dynamic = |
+ cmC.newInstance(const Symbol(''), []).reflectee; |
+ |
+ Expect.equals(int, reflective_a_int.t); |
+ Expect.equals(dynamic, reflective_a_dynamic.t); |
+ Expect.equals(int, reflective_b.t); |
+ Expect.equals(num, c_string.t); |
+ Expect.equals(num, reflective_c_dynamic.t); |
+ |
+ Expect.equals(String, c_string.s); |
+ Expect.equals(dynamic, reflective_c_dynamic.s); |
+ |
+ Expect.equals(a_int.runtimeType, reflective_a_int.runtimeType); |
+ Expect.equals(a_dynamic.runtimeType, reflective_a_dynamic.runtimeType); |
+ Expect.equals(b.runtimeType, reflective_b.runtimeType); |
+ Expect.equals(c_dynamic.runtimeType, reflective_c_dynamic.runtimeType); |
+} |