| // 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. |
| |
| // @dart = 2.9 |
| |
| // Regression test for the dart2js implementation of runtime types. |
| |
| library test.type_mirror_for_type; |
| |
| import 'package:expect/expect.dart'; |
| |
| 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) as ClassMirror; |
| var declarationMirror = typeMirror.declarations[#foo] as MethodMirror; |
| // 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); |
| } |