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

Side by Side Diff: pkg/docgen/lib/src/models/model_helpers.dart

Issue 268583002: Access parameter data in Annotations, as well as fixed export visibility (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 7 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
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library docgen.model_helpers; 5 library docgen.model_helpers;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 import '../exports/dart2js_mirrors.dart' as dart2js_mirrors; 9 import '../exports/dart2js_mirrors.dart' as dart2js_mirrors;
10 import '../exports/mirrors_util.dart' as dart2js_util; 10 import '../exports/mirrors_util.dart' as dart2js_util;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 } 71 }
72 72
73 // TODO(kevmoo) Handle consts of non-core types 73 // TODO(kevmoo) Handle consts of non-core types
74 74
75 return '${valueMirror}'; 75 return '${valueMirror}';
76 } 76 }
77 77
78 /// Returns a list of meta annotations assocated with a mirror. 78 /// Returns a list of meta annotations assocated with a mirror.
79 List<Annotation> createAnnotations(DeclarationMirror mirror, 79 List<Annotation> createAnnotations(DeclarationMirror mirror,
80 Library owningLibrary) { 80 Library owningLibrary) {
81 var annotationMirrors = mirror.metadata
82 .where((e) => e is dart2js_mirrors.Dart2JsConstructedConstantMirror);
83 var annotations = []; 81 var annotations = [];
84 annotationMirrors.forEach((annotation) { 82 for (dart2js_mirrors.ResolvedNode node in
85 var docgenAnnotation = new Annotation(annotation, owningLibrary); 83 dart2js_mirrors.BackDoor.metadataSyntaxOf(mirror)) {
84 var docgenAnnotation = new Annotation(node, owningLibrary);
86 if (!_SKIPPED_ANNOTATIONS.contains(dart2js_util.qualifiedNameOf( 85 if (!_SKIPPED_ANNOTATIONS.contains(dart2js_util.qualifiedNameOf(
87 docgenAnnotation.mirror))) { 86 docgenAnnotation.mirror))) {
88 annotations.add(docgenAnnotation); 87 annotations.add(docgenAnnotation);
89 } 88 }
90 }); 89 }
91 return annotations; 90 return annotations;
92 } 91 }
93 92
94 /// A declaration is private if itself is private, or the owner is private. 93 /// A declaration is private if itself is private, or the owner is private.
95 bool isHidden(DeclarationSourceMirror mirror) { 94 bool isHidden(DeclarationSourceMirror mirror) {
96 if (mirror is LibraryMirror) { 95 if (mirror is LibraryMirror) {
97 return _isLibraryPrivate(mirror); 96 return _isLibraryPrivate(mirror);
98 } else if (mirror.owner is LibraryMirror) { 97 } else if (mirror.owner is LibraryMirror) {
99 return (mirror.isPrivate || _isLibraryPrivate(mirror.owner) || 98 return (mirror.isPrivate || _isLibraryPrivate(mirror.owner) ||
100 mirror.isNameSynthetic); 99 mirror.isNameSynthetic);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 Map<String, Map<String, DeclarationMirror>> calcExportedItems( 149 Map<String, Map<String, DeclarationMirror>> calcExportedItems(
151 LibrarySourceMirror library) { 150 LibrarySourceMirror library) {
152 var exports = {}; 151 var exports = {};
153 exports['classes'] = {}; 152 exports['classes'] = {};
154 exports['methods'] = {}; 153 exports['methods'] = {};
155 exports['variables'] = {}; 154 exports['variables'] = {};
156 155
157 // Determine the classes, variables and methods that are exported for a 156 // Determine the classes, variables and methods that are exported for a
158 // specific dependency. 157 // specific dependency.
159 void _populateExports(LibraryDependencyMirror export, bool showExport) { 158 void _populateExports(LibraryDependencyMirror export, bool showExport) {
159 var transitiveExports = calcExportedItems(export.targetLibrary);
160 exports['classes'].addAll(transitiveExports['classes']);
161 exports['methods'].addAll(transitiveExports['methods']);
162 exports['variables'].addAll(transitiveExports['variables']);
163 // If there is a show in the export, add only the show items to the
164 // library. Ex: "export foo show bar"
165 // Otherwise, add all items, and then remove the hidden ones.
166 // Ex: "export foo hide bar"
167
160 if (!showExport) { 168 if (!showExport) {
161 // Add all items, and then remove the hidden ones. 169 // Add all items, and then remove the hidden ones.
162 // Ex: "export foo hide bar" 170 // Ex: "export foo hide bar"
163 addAll(exports['classes'], 171 addAll(exports['classes'],
164 dart2js_util.typesOf(export.targetLibrary.declarations)); 172 dart2js_util.typesOf(export.targetLibrary.declarations));
165 addAll(exports['methods'], 173 addAll(exports['methods'],
166 export.targetLibrary.declarations.values.where( 174 export.targetLibrary.declarations.values.where(
167 (mirror) => mirror is MethodMirror)); 175 (mirror) => mirror is MethodMirror));
168 addAll(exports['variables'], 176 addAll(exports['variables'],
169 dart2js_util.variablesOf(export.targetLibrary.declarations)); 177 dart2js_util.variablesOf(export.targetLibrary.declarations));
(...skipping 22 matching lines...) Expand all
192 subMap.remove(identifier); 200 subMap.remove(identifier);
193 } 201 }
194 } 202 }
195 } 203 }
196 } 204 }
197 } 205 }
198 206
199 Iterable<LibraryDependencyMirror> exportList = 207 Iterable<LibraryDependencyMirror> exportList =
200 library.libraryDependencies.where((lib) => lib.isExport); 208 library.libraryDependencies.where((lib) => lib.isExport);
201 for (LibraryDependencyMirror export in exportList) { 209 for (LibraryDependencyMirror export in exportList) {
202 // If there is a show in the export, add only the show items to the
203 // library. Ex: "export foo show bar"
204 // Otherwise, add all items, and then remove the hidden ones.
205 // Ex: "export foo hide bar"
206 _populateExports(export, 210 _populateExports(export,
207 export.combinators.any((combinator) => combinator.isShow)); 211 export.combinators.any((combinator) => combinator.isShow));
208 } 212 }
209 return exports; 213 return exports;
210 } 214 }
211 215
212 216
213 /// Returns a map of [Variable] objects constructed from [mirrorMap]. 217 /// Returns a map of [Variable] objects constructed from [mirrorMap].
214 /// The optional parameter [containingLibrary] is contains data for variables 218 /// The optional parameter [containingLibrary] is contains data for variables
215 /// defined at the top level of a library (potentially for exporting 219 /// defined at the top level of a library (potentially for exporting
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 // the time. 281 // the time.
278 var sdkLibrary = LIBRARIES[dart2js_util.nameOf(mirror)]; 282 var sdkLibrary = LIBRARIES[dart2js_util.nameOf(mirror)];
279 if (sdkLibrary != null) { 283 if (sdkLibrary != null) {
280 return !sdkLibrary.documented; 284 return !sdkLibrary.documented;
281 } else if (dart2js_util.nameOf(mirror).startsWith('_') || dart2js_util.nameOf( 285 } else if (dart2js_util.nameOf(mirror).startsWith('_') || dart2js_util.nameOf(
282 mirror).contains('._')) { 286 mirror).contains('._')) {
283 return true; 287 return true;
284 } 288 }
285 return false; 289 return false;
286 } 290 }
OLDNEW
« no previous file with comments | « pkg/docgen/lib/src/models/annotation.dart ('k') | pkg/docgen/test/multi_library_code/lib/test_lib2.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698