Index: test/codegen/lib/mirrors/type_mirror_for_type_test.dart |
diff --git a/test/codegen/lib/mirrors/type_mirror_for_type_test.dart b/test/codegen/lib/mirrors/type_mirror_for_type_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3c3d53a3f16bf77382deb8772829bda8f9037bdc |
--- /dev/null |
+++ b/test/codegen/lib/mirrors/type_mirror_for_type_test.dart |
@@ -0,0 +1,33 @@ |
+// Copyright (c) 2014, 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. |
+ |
+// Regression test for the dart2js implementation of runtime types. |
+ |
+library test.type_mirror_for_type; |
+ |
+import 'package:expect/expect.dart'; |
+ |
+@MirrorsUsed(targets: 'test.type_mirror_for_type') |
+import 'dart:mirrors'; |
+ |
+class C<T> {} |
+ |
+class X { |
+ Type foo() {} |
+} |
+ |
+main() { |
+ // Make sure that we need a type test against the runtime representation of |
+ // [Type]. |
+ var a = (new DateTime.now().millisecondsSinceEpoch != 42) |
+ ? new C<Type>() : new C<int>(); |
+ print (a is C<Type>); |
+ |
+ var typeMirror = reflectType(X); |
+ var declarationMirror = typeMirror.declarations[#foo]; |
+ // Test that the runtime type implementation does not confuse the runtime type |
+ // representation of [Type] with an actual value of type [Type] when analyzing |
+ // the return type of [foo]. |
+ Expect.equals(reflectType(Type), declarationMirror.returnType); |
+} |