dart-sdk/tests/lib/mirrors/field_type_test.dart
Ryan Macnak 081e2acf29 [test] Update copied mirrors tests for Dart 3.
Bug: https://github.com/dart-lang/sdk/issues/40045
Change-Id: Ic0f62843d61b613e61f434b72b9553dd1e6897af
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/132441
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2020-01-23 18:09:37 +00:00

86 lines
2.8 KiB
Dart

// 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 = 0;
@C(42)
@C(44)
String field = "";
var dynamicTypeField;
late T typeVariableField;
late H<int> parameterizedTypeField;
}
class H<T> {}
testOriginalDeclaration() {
ClassMirror a = reflectClass(A);
VariableMirror staticField = a.declarations[#staticField] as VariableMirror;
VariableMirror field = a.declarations[#field] as VariableMirror;
VariableMirror dynamicTypeField =
a.declarations[#dynamicTypeField] as VariableMirror;
VariableMirror typeVariableField =
a.declarations[#typeVariableField] as VariableMirror;
VariableMirror parameterizedTypeField =
a.declarations[#parameterizedTypeField] as VariableMirror;
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] as VariableMirror;
VariableMirror field = aOfString.declarations[#field] as VariableMirror;
VariableMirror dynamicTypeField =
aOfString.declarations[#dynamicTypeField] as VariableMirror;
VariableMirror typeVariableField =
aOfString.declarations[#typeVariableField] as VariableMirror;
VariableMirror parameterizedTypeField =
aOfString.declarations[#parameterizedTypeField] as VariableMirror;
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] as VariableMirror;
Expect.equals(reflectClass(String), topLevel.type);
}
main() {
testOriginalDeclaration();
testInstance();
testTopLevel();
}