Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(261)

Side by Side Diff: tests/compiler/dart2js/mirrors/mirrors_reader_test.dart

Issue 153553007: Add mirrors_reader_test. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Small fix. Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 // Test that everything reachable from a [MirrorSystem] can be accessed.
6
7 library test.mirrors.reader;
8
9 import "dart:mirrors" hide SourceLocation;
10
11 import "package:async_helper/async_helper.dart";
12
13 import "mirrors_test_helper.dart";
14 import "../../../lib/mirrors/mirrors_reader.dart";
15 import "../../../../sdk/lib/_internal/compiler/implementation/util/util.dart";
16 import "../../../../sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mi rrors.dart";
17 import "../../../../sdk/lib/_internal/compiler/implementation/mirrors/source_mir rors.dart";
18
19 class SourceMirrorsReader extends MirrorsReader {
20 final Dart2JsMirrorSystem mirrorSystem;
21
22 SourceMirrorsReader(this.mirrorSystem,
23 {bool verbose: false, bool includeStackTrace: false})
24 : super(verbose: verbose, includeStackTrace: includeStackTrace);
25
26 evaluate(f()) {
27 try {
28 return f();
29 } on SpannableAssertionFailure catch (e) {
30 mirrorSystem.compiler.reportAssertionFailure(e);
31 rethrow;
32 }
33 }
34
35 visitMirror(Mirror mirror) {
36 if (mirror is CombinatorMirror) {
37 visitCombinatorMirror(mirror);
38 } else if (mirror is LibraryDependencyMirror) {
39 visitLibraryDependencyMirror(mirror);
40 } else if (mirror is CommentInstanceMirror) {
41 visitCommentInstanceMirror(mirror);
42 } else if (mirror is ListInstanceMirror) {
43 visitListInstanceMirror(mirror);
44 } else if (mirror is MapInstanceMirror) {
45 visitMapInstanceMirror(mirror);
46 } else if (mirror is TypeInstanceMirror) {
47 visitTypeInstanceMirror(mirror);
48 } else {
49 super.visitMirror(mirror);
50 }
51 }
52
53 visitDeclarationMirror(DeclarationSourceMirror mirror) {
54 super.visitDeclarationMirror(mirror);
55 visit(mirror, 'isNameSynthetic', () => mirror.isNameSynthetic);
56 }
57
58 visitClassMirror(ClassSourceMirror mirror) {
59 super.visitClassMirror(mirror);
60 visit(mirror, 'isAbstract', () => mirror.isAbstract);
61 }
62
63 visitLibraryMirror(LibrarySourceMirror mirror) {
64 super.visitLibraryMirror(mirror);
65 visit(mirror, 'libraryDependencies', () => mirror.libraryDependencies);
66 }
67
68 visitParameterMirror(ParameterMirror mirror) {
69 super.visitParameterMirror(mirror);
70 if (mirror is ParameterSourceMirror) {
71 visit(mirror, 'isInitializingFormal', () => mirror.isInitializingFormal);
72 visit(mirror, 'initializedField', () => mirror.initializedField);
73 }
74 }
75
76 visitTypeMirror(TypeSourceMirror mirror) {
77 super.visitTypeMirror(mirror);
78 visit(mirror, 'isVoid', () => mirror.isVoid);
79 visit(mirror, 'isDynamic', () => mirror.isDynamic);
80 }
81
82 visitSourceLocation(SourceLocation location) {
83 super.visitSourceLocation(location);
84 visit(location, 'line', () => location.line);
85 visit(location, 'column', () => location.column);
86 visit(location, 'offset', () => location.offset);
87 visit(location, 'length', () => location.length);
88 visit(location, 'text', () => location.text);
89 visit(location, 'sourceUri', () => location.sourceUri);
90 visit(location, 'sourceText', () => location.sourceText);
91 }
92
93 visitCombinatorMirror(CombinatorMirror mirror) {
94 visit(mirror, 'identifiers', () => mirror.identifiers);
95 visit(mirror, 'isShow', () => mirror.isShow);
96 visit(mirror, 'isHide', () => mirror.isHide);
97 }
98
99 visitLibraryDependencyMirror(LibraryDependencyMirror mirror) {
100 visit(mirror, 'isImport', () => mirror.isImport);
101 visit(mirror, 'isExport', () => mirror.isExport);
102 visit(mirror, 'sourceLibrary', () => mirror.sourceLibrary);
103 visit(mirror, 'targetLibrary', () => mirror.targetLibrary);
104 visit(mirror, 'prefix', () => mirror.prefix);
105 visit(mirror, 'combinators', () => mirror.combinators);
106 visit(mirror, 'location', () => mirror.location);
107 }
108
109 visitCommentInstanceMirror(CommentInstanceMirror mirror) {
110 visitInstanceMirror(mirror);
111 visit(mirror, 'text', () => mirror.text);
112 visit(mirror, 'trimmedText', () => mirror.trimmedText);
113 visit(mirror, 'isDocComment', () => mirror.isDocComment);
114 }
115
116 visitListInstanceMirror(ListInstanceMirror mirror) {
117 visitInstanceMirror(mirror);
118 visit(mirror, 'length', () => mirror.length);
119 }
120
121 visitMapInstanceMirror(MapInstanceMirror mirror) {
122 visitInstanceMirror(mirror);
123 visit(mirror, 'keys', () => mirror.keys);
124 visit(mirror, 'length', () => mirror.length);
125 }
126
127 visitTypeInstanceMirror(TypeInstanceMirror mirror) {
128 visitInstanceMirror(mirror);
129 visit(mirror, 'representedType', () => mirror.representedType);
130 }
131 }
132
133 main(List<String> arguments) {
134 asyncTest(() => analyzeUri(Uri.parse('dart:core')).
135 then((MirrorSystem mirrors) {
136 MirrorsReader reader = new SourceMirrorsReader(mirrors,
137 verbose: arguments.contains('-v'),
138 includeStackTrace: arguments.contains('-s'));
139 reader.checkMirrorSystem(mirrors);
140 }));
141 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698