| Index: test/codegen/lib/mirrors/field_type_test.dart
|
| diff --git a/test/codegen/lib/mirrors/field_type_test.dart b/test/codegen/lib/mirrors/field_type_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a5e6b716ae9ff0f9115f4b209523fcf0d8184ad3
|
| --- /dev/null
|
| +++ b/test/codegen/lib/mirrors/field_type_test.dart
|
| @@ -0,0 +1,77 @@
|
| +// 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 field_test;
|
| +
|
| +import 'dart:mirrors';
|
| +import "package:expect/expect.dart";
|
| +
|
| +String toplevelVariable;
|
| +class C {
|
| + final int i;
|
| + const C(this.i);
|
| +}
|
| +class A<T> {
|
| + static int staticField;
|
| + @C(42)
|
| + @C(44)
|
| + String field;
|
| + var dynamicTypeField;
|
| + T typeVariableField;
|
| + H<int> parameterizedTypeField;
|
| +}
|
| +
|
| +class H<T> {}
|
| +
|
| +testOriginalDeclaration() {
|
| + ClassMirror a = reflectClass(A);
|
| + VariableMirror staticField = a.declarations[#staticField];
|
| + VariableMirror field = a.declarations[#field];
|
| + VariableMirror dynamicTypeField = a.declarations[#dynamicTypeField];
|
| + VariableMirror typeVariableField = a.declarations[#typeVariableField];
|
| + VariableMirror parameterizedTypeField =
|
| + a.declarations[#parameterizedTypeField];
|
| +
|
| + Expect.equals(reflectType(int), staticField.type);
|
| + Expect.equals(reflectClass(String), field.type);
|
| + Expect.equals(reflectType(dynamic), dynamicTypeField.type);
|
| + Expect.equals(a.typeVariables.single, typeVariableField.type);
|
| + Expect.equals(reflect(new H<int>()).type, parameterizedTypeField.type);
|
| +
|
| + Expect.equals(2, field.metadata.length);
|
| + Expect.equals(reflect(const C(42)), field.metadata.first);
|
| + Expect.equals(reflect(const C(44)), field.metadata.last);
|
| +}
|
| +
|
| +testInstance() {
|
| + ClassMirror aOfString = reflect(new A<String>()).type;
|
| + VariableMirror staticField = aOfString.declarations[#staticField];
|
| + VariableMirror field = aOfString.declarations[#field];
|
| + VariableMirror dynamicTypeField = aOfString.declarations[#dynamicTypeField];
|
| + VariableMirror typeVariableField = aOfString.declarations[#typeVariableField];
|
| + VariableMirror parameterizedTypeField =
|
| + aOfString.declarations[#parameterizedTypeField];
|
| +
|
| + Expect.equals(reflectType(int), staticField.type);
|
| + Expect.equals(reflectClass(String), field.type);
|
| + Expect.equals(reflectType(dynamic), dynamicTypeField.type);
|
| + Expect.equals(reflectClass(String), typeVariableField.type);
|
| + Expect.equals(reflect(new H<int>()).type, parameterizedTypeField.type);
|
| +
|
| + Expect.equals(2, field.metadata.length);
|
| + Expect.equals(reflect(const C(42)), field.metadata.first);
|
| + Expect.equals(reflect(const C(44)), field.metadata.last);
|
| +}
|
| +
|
| +testTopLevel() {
|
| + LibraryMirror currentLibrary = currentMirrorSystem().findLibrary(#field_test);
|
| + VariableMirror topLevel = currentLibrary.declarations[#toplevelVariable];
|
| + Expect.equals(reflectClass(String), topLevel.type);
|
| +}
|
| +
|
| +main() {
|
| + testOriginalDeclaration();
|
| + testInstance();
|
| + testTopLevel();
|
| +}
|
|
|