| Index: tests/compiler/dart2js/mirrors/mirrors_reader_test.dart
|
| diff --git a/tests/compiler/dart2js/mirrors/mirrors_reader_test.dart b/tests/compiler/dart2js/mirrors/mirrors_reader_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..53c9cebb58679e97b929bc51589acab53bec4f8b
|
| --- /dev/null
|
| +++ b/tests/compiler/dart2js/mirrors/mirrors_reader_test.dart
|
| @@ -0,0 +1,141 @@
|
| +// 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.
|
| +
|
| +// Test that everything reachable from a [MirrorSystem] can be accessed.
|
| +
|
| +library test.mirrors.reader;
|
| +
|
| +import "dart:mirrors" hide SourceLocation;
|
| +
|
| +import "package:async_helper/async_helper.dart";
|
| +
|
| +import "mirrors_test_helper.dart";
|
| +import "../../../lib/mirrors/mirrors_reader.dart";
|
| +import "../../../../sdk/lib/_internal/compiler/implementation/util/util.dart";
|
| +import "../../../../sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirrors.dart";
|
| +import "../../../../sdk/lib/_internal/compiler/implementation/mirrors/source_mirrors.dart";
|
| +
|
| +class SourceMirrorsReader extends MirrorsReader {
|
| + final Dart2JsMirrorSystem mirrorSystem;
|
| +
|
| + SourceMirrorsReader(this.mirrorSystem,
|
| + {bool verbose: false, bool includeStackTrace: false})
|
| + : super(verbose: verbose, includeStackTrace: includeStackTrace);
|
| +
|
| + evaluate(f()) {
|
| + try {
|
| + return f();
|
| + } on SpannableAssertionFailure catch (e) {
|
| + mirrorSystem.compiler.reportAssertionFailure(e);
|
| + rethrow;
|
| + }
|
| + }
|
| +
|
| + visitMirror(Mirror mirror) {
|
| + if (mirror is CombinatorMirror) {
|
| + visitCombinatorMirror(mirror);
|
| + } else if (mirror is LibraryDependencyMirror) {
|
| + visitLibraryDependencyMirror(mirror);
|
| + } else if (mirror is CommentInstanceMirror) {
|
| + visitCommentInstanceMirror(mirror);
|
| + } else if (mirror is ListInstanceMirror) {
|
| + visitListInstanceMirror(mirror);
|
| + } else if (mirror is MapInstanceMirror) {
|
| + visitMapInstanceMirror(mirror);
|
| + } else if (mirror is TypeInstanceMirror) {
|
| + visitTypeInstanceMirror(mirror);
|
| + } else {
|
| + super.visitMirror(mirror);
|
| + }
|
| + }
|
| +
|
| + visitDeclarationMirror(DeclarationSourceMirror mirror) {
|
| + super.visitDeclarationMirror(mirror);
|
| + visit(mirror, 'isNameSynthetic', () => mirror.isNameSynthetic);
|
| + }
|
| +
|
| + visitClassMirror(ClassSourceMirror mirror) {
|
| + super.visitClassMirror(mirror);
|
| + visit(mirror, 'isAbstract', () => mirror.isAbstract);
|
| + }
|
| +
|
| + visitLibraryMirror(LibrarySourceMirror mirror) {
|
| + super.visitLibraryMirror(mirror);
|
| + visit(mirror, 'libraryDependencies', () => mirror.libraryDependencies);
|
| + }
|
| +
|
| + visitParameterMirror(ParameterMirror mirror) {
|
| + super.visitParameterMirror(mirror);
|
| + if (mirror is ParameterSourceMirror) {
|
| + visit(mirror, 'isInitializingFormal', () => mirror.isInitializingFormal);
|
| + visit(mirror, 'initializedField', () => mirror.initializedField);
|
| + }
|
| + }
|
| +
|
| + visitTypeMirror(TypeSourceMirror mirror) {
|
| + super.visitTypeMirror(mirror);
|
| + visit(mirror, 'isVoid', () => mirror.isVoid);
|
| + visit(mirror, 'isDynamic', () => mirror.isDynamic);
|
| + }
|
| +
|
| + visitSourceLocation(SourceLocation location) {
|
| + super.visitSourceLocation(location);
|
| + visit(location, 'line', () => location.line);
|
| + visit(location, 'column', () => location.column);
|
| + visit(location, 'offset', () => location.offset);
|
| + visit(location, 'length', () => location.length);
|
| + visit(location, 'text', () => location.text);
|
| + visit(location, 'sourceUri', () => location.sourceUri);
|
| + visit(location, 'sourceText', () => location.sourceText);
|
| + }
|
| +
|
| + visitCombinatorMirror(CombinatorMirror mirror) {
|
| + visit(mirror, 'identifiers', () => mirror.identifiers);
|
| + visit(mirror, 'isShow', () => mirror.isShow);
|
| + visit(mirror, 'isHide', () => mirror.isHide);
|
| + }
|
| +
|
| + visitLibraryDependencyMirror(LibraryDependencyMirror mirror) {
|
| + visit(mirror, 'isImport', () => mirror.isImport);
|
| + visit(mirror, 'isExport', () => mirror.isExport);
|
| + visit(mirror, 'sourceLibrary', () => mirror.sourceLibrary);
|
| + visit(mirror, 'targetLibrary', () => mirror.targetLibrary);
|
| + visit(mirror, 'prefix', () => mirror.prefix);
|
| + visit(mirror, 'combinators', () => mirror.combinators);
|
| + visit(mirror, 'location', () => mirror.location);
|
| + }
|
| +
|
| + visitCommentInstanceMirror(CommentInstanceMirror mirror) {
|
| + visitInstanceMirror(mirror);
|
| + visit(mirror, 'text', () => mirror.text);
|
| + visit(mirror, 'trimmedText', () => mirror.trimmedText);
|
| + visit(mirror, 'isDocComment', () => mirror.isDocComment);
|
| + }
|
| +
|
| + visitListInstanceMirror(ListInstanceMirror mirror) {
|
| + visitInstanceMirror(mirror);
|
| + visit(mirror, 'length', () => mirror.length);
|
| + }
|
| +
|
| + visitMapInstanceMirror(MapInstanceMirror mirror) {
|
| + visitInstanceMirror(mirror);
|
| + visit(mirror, 'keys', () => mirror.keys);
|
| + visit(mirror, 'length', () => mirror.length);
|
| + }
|
| +
|
| + visitTypeInstanceMirror(TypeInstanceMirror mirror) {
|
| + visitInstanceMirror(mirror);
|
| + visit(mirror, 'representedType', () => mirror.representedType);
|
| + }
|
| +}
|
| +
|
| +main(List<String> arguments) {
|
| + asyncTest(() => analyzeUri(Uri.parse('dart:core')).
|
| + then((MirrorSystem mirrors) {
|
| + MirrorsReader reader = new SourceMirrorsReader(mirrors,
|
| + verbose: arguments.contains('-v'),
|
| + includeStackTrace: arguments.contains('-s'));
|
| + reader.checkMirrorSystem(mirrors);
|
| + }));
|
| +}
|
|
|