| Index: pkg/docgen/lib/docgen.dart
|
| diff --git a/pkg/docgen/lib/docgen.dart b/pkg/docgen/lib/docgen.dart
|
| index fb4238fdcc564e832291007e6935810cc70f06b3..4da28a676bb24169c44d4b9cd73e2cb7018dcf0e 100644
|
| --- a/pkg/docgen/lib/docgen.dart
|
| +++ b/pkg/docgen/lib/docgen.dart
|
| @@ -26,9 +26,11 @@ import 'dart2yaml.dart';
|
| import 'src/io.dart';
|
| import '../../../sdk/lib/_internal/compiler/compiler.dart' as api;
|
| import '../../../sdk/lib/_internal/compiler/implementation/filenames.dart';
|
| -import '../../../sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart'
|
| +import '../../../sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirrors.dart'
|
| as dart2js;
|
| -import '../../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors.dart';
|
| +import '../../../sdk/lib/_internal/compiler/implementation/mirrors/analyze.dart'
|
| + as dart2js;
|
| +import '../../../sdk/lib/_internal/compiler/implementation/mirrors/source_mirrors.dart';
|
| import '../../../sdk/lib/_internal/compiler/implementation/mirrors/mirrors_util.dart'
|
| as dart2js_util;
|
| import '../../../sdk/lib/_internal/compiler/implementation/source_file_provider.dart';
|
| @@ -122,7 +124,7 @@ Map<String, Map<String, Set<MirrorBased>>> mirrorToDocgen =
|
| /// a MirrorBased object.
|
| MirrorBased getDocgenObject(DeclarationMirror mirror, [Indexable owner]) {
|
| Map<String, Set<MirrorBased>> docgenObj =
|
| - mirrorToDocgen[mirror.qualifiedName];
|
| + mirrorToDocgen[dart2js_util.qualifiedNameOf(mirror)];
|
| if (docgenObj == null) {
|
| return new DummyMirror(mirror, owner);
|
| }
|
| @@ -177,15 +179,15 @@ class DummyMirror implements MirrorBased {
|
| String get docName {
|
| if (mirror == null) return '';
|
| if (mirror is LibraryMirror) {
|
| - return mirror.qualifiedName.replaceAll('.','-');
|
| + return dart2js_util.qualifiedNameOf(mirror).replaceAll('.','-');
|
| }
|
| var mirrorOwner = mirror.owner;
|
| - if (mirrorOwner == null) return mirror.qualifiedName;
|
| - var simpleName = mirror.simpleName;
|
| + if (mirrorOwner == null) return dart2js_util.qualifiedNameOf(mirror);
|
| + var simpleName = dart2js_util.nameOf(mirror);
|
| if (mirror is MethodMirror && (mirror as MethodMirror).isConstructor) {
|
| // We name constructors specially -- including the class name again and a
|
| // "-" to separate the constructor from its name (if any).
|
| - simpleName = '${mirrorOwner.simpleName}-$simpleName';
|
| + simpleName = '${dart2js_util.nameOf(mirrorOwner)}-$simpleName';
|
| }
|
| return getDocgenObject(mirrorOwner, owner).docName + '.' + simpleName;
|
| }
|
| @@ -202,7 +204,7 @@ abstract class MirrorBased {
|
| /// Returns this object's qualified name, but following the conventions
|
| /// we're using in Dartdoc, which is that library names with dots in them
|
| /// have them replaced with hyphens.
|
| - String get docName => owner.docName + '.' + mirror.simpleName;
|
| + String get docName => owner.docName + '.' + dart2js_util.nameOf(mirror);
|
|
|
| /// Returns a list of meta annotations assocated with a mirror.
|
| List<Annotation> _createAnnotations(DeclarationMirror mirror,
|
| @@ -213,7 +215,7 @@ abstract class MirrorBased {
|
| annotationMirrors.forEach((annotation) {
|
| var docgenAnnotation = new Annotation(annotation, owningLibrary);
|
| if (!_SKIPPED_ANNOTATIONS.contains(
|
| - docgenAnnotation.mirror.qualifiedName)) {
|
| + dart2js_util.qualifiedNameOf(docgenAnnotation.mirror))) {
|
| annotations.add(docgenAnnotation);
|
| }
|
| });
|
| @@ -324,7 +326,7 @@ class _Generator {
|
| librariesToDocument.addAll(
|
| (includeSdk || parseSdk) ? Indexable._sdkLibraries : []);
|
| librariesToDocument.removeWhere(
|
| - (x) => _excluded.contains(x.simpleName));
|
| + (x) => _excluded.contains(dart2js_util.nameOf(x)));
|
| _documentLibraries(librariesToDocument, includeSdk: includeSdk,
|
| outputToYaml: outputToYaml, append: append, parseSdk: parseSdk,
|
| introFileName: introFileName);
|
| @@ -673,21 +675,23 @@ class Indexable extends MirrorBased {
|
| Indexable(this.mirror) {
|
| this.isPrivate = _isHidden(mirror);
|
|
|
| - var map = mirrorToDocgen[this.mirror.qualifiedName];
|
| + var map = mirrorToDocgen[dart2js_util.qualifiedNameOf(this.mirror)];
|
| if (map == null) map = new Map<String, Set<MirrorBased>>();
|
|
|
| var set = map[owner.docName];
|
| if (set == null) set = new Set<MirrorBased>();
|
| set.add(this);
|
| map[owner.docName] = set;
|
| - mirrorToDocgen[this.mirror.qualifiedName] = map;
|
| + mirrorToDocgen[dart2js_util.qualifiedNameOf(this.mirror)] = map;
|
| }
|
|
|
| /** Walk up the owner chain to find the owning library. */
|
| Library _getOwningLibrary(Indexable indexable) {
|
| if (indexable is Library) return indexable;
|
| // TODO: is this needed?
|
| - if (indexable is DummyMirror) return getDocgenObject(indexable.mirror.library);
|
| + if (indexable is DummyMirror) {
|
| + return getDocgenObject(dart2js_util.getLibrary(indexable.mirror));
|
| + }
|
| return _getOwningLibrary(indexable.owner);
|
| }
|
|
|
| @@ -745,7 +749,7 @@ class Indexable extends MirrorBased {
|
|
|
| set comment(x) => _comment = x;
|
|
|
| - String get name => mirror.simpleName;
|
| + String get name => dart2js_util.nameOf(mirror);
|
|
|
| MirrorBased get owner => new DummyMirror(mirror.owner);
|
|
|
| @@ -761,7 +765,7 @@ class Indexable extends MirrorBased {
|
| // TODO: refactor OOP
|
| if (this is Library) return '';
|
| var domAnnotation = this.annotations.firstWhere(
|
| - (e) => e.mirror.qualifiedName == 'metadata.DomName',
|
| + (e) => dart2js_util.qualifiedNameOf(e.mirror) == 'metadata.DomName',
|
| orElse: () => null);
|
| if (domAnnotation == null) return '';
|
| var domName = domAnnotation.parameters.single;
|
| @@ -848,13 +852,14 @@ class Indexable extends MirrorBased {
|
| /// The optional parameter [containingLibrary] is contains data for variables
|
| /// defined at the top level of a library (potentially for exporting
|
| /// purposes).
|
| - Map<String, Variable> _createVariables(Map<String, VariableMirror> mirrorMap,
|
| + Map<String, Variable> _createVariables(Iterable<VariableMirror> mirrors,
|
| Indexable owner) {
|
| var data = {};
|
| // TODO(janicejl): When map to map feature is created, replace the below
|
| // with a filter. Issue(#9590).
|
| - mirrorMap.forEach((String mirrorName, VariableMirror mirror) {
|
| + mirrors.forEach((VariableMirror mirror) {
|
| if (_Generator._includePrivate || !_isHidden(mirror)) {
|
| + var mirrorName = dart2js_util.nameOf(mirror);
|
| var variable = new Variable(mirrorName, mirror, owner);
|
| entityMap[variable.docName] = variable;
|
| data[mirrorName] = entityMap[variable.docName];
|
| @@ -867,14 +872,14 @@ class Indexable extends MirrorBased {
|
| /// The optional parameter [containingLibrary] is contains data for variables
|
| /// defined at the top level of a library (potentially for exporting
|
| /// purposes).
|
| - Map<String, Method> _createMethods(Map<String, MethodMirror> mirrorMap,
|
| + Map<String, Method> _createMethods(Iterable<MethodMirror> mirrors,
|
| Indexable owner) {
|
| var group = new Map<String, Method>();
|
| - mirrorMap.forEach((String mirrorName, MethodMirror mirror) {
|
| + mirrors.forEach((MethodMirror mirror) {
|
| if (_Generator._includePrivate || !mirror.isPrivate) {
|
| var method = new Method(mirror, owner);
|
| entityMap[method.docName] = method;
|
| - group[mirror.simpleName] = method;
|
| + group[dart2js_util.nameOf(mirror)] = method;
|
| }
|
| });
|
| return group;
|
| @@ -885,13 +890,14 @@ class Indexable extends MirrorBased {
|
| Indexable owner) {
|
| var data = {};
|
| mirrorList.forEach((ParameterMirror mirror) {
|
| - data[mirror.simpleName] = new Parameter(mirror, _getOwningLibrary(owner));
|
| + data[dart2js_util.nameOf(mirror)] =
|
| + new Parameter(mirror, _getOwningLibrary(owner));
|
| });
|
| return data;
|
| }
|
|
|
| /// Returns a map of [Generic] objects constructed from the class mirror.
|
| - Map<String, Generic> _createGenerics(ClassMirror mirror) {
|
| + Map<String, Generic> _createGenerics(TypeMirror mirror) {
|
| return new Map.fromIterable(mirror.typeVariables,
|
| key: (e) => e.toString(),
|
| value: (e) => new Generic(e));
|
| @@ -925,11 +931,11 @@ class Indexable extends MirrorBased {
|
| /// An example that contains ._ is dart._collection.dev
|
| // This is because LibraryMirror.isPrivate returns `false` all the time.
|
| bool _isLibraryPrivate(LibraryMirror mirror) {
|
| - var sdkLibrary = LIBRARIES[mirror.simpleName];
|
| + var sdkLibrary = LIBRARIES[dart2js_util.nameOf(mirror)];
|
| if (sdkLibrary != null) {
|
| return !sdkLibrary.documented;
|
| - } else if (mirror.simpleName.startsWith('_') ||
|
| - mirror.simpleName.contains('._')) {
|
| + } else if (dart2js_util.nameOf(mirror).startsWith('_') ||
|
| + dart2js_util.nameOf(mirror).contains('._')) {
|
| return true;
|
| }
|
| return false;
|
| @@ -1115,39 +1121,39 @@ class Library extends Indexable {
|
|
|
| Library._(LibraryMirror libraryMirror) : super(libraryMirror) {
|
| var exported = _calcExportedItems(libraryMirror);
|
| - var exportedClasses = exported['classes']..addAll(libraryMirror.classes);
|
| + var exportedClasses = _addAll(exported['classes'],
|
| + dart2js_util.typesOf(libraryMirror.declarations));
|
| _findPackage(mirror);
|
| classes = {};
|
| typedefs = {};
|
| errors = {};
|
| - exportedClasses.forEach((String mirrorName, ClassMirror classMirror) {
|
| - if (classMirror.isTypedef) {
|
| + exportedClasses.forEach((String mirrorName, TypeMirror mirror) {
|
| + if (mirror is TypedefMirror) {
|
| // This is actually a Dart2jsTypedefMirror, and it does define value,
|
| // but we don't have visibility to that type.
|
| - var mirror = classMirror;
|
| if (_Generator._includePrivate || !mirror.isPrivate) {
|
| entityMap[getDocgenObject(mirror).docName] =
|
| new Typedef(mirror, this);
|
| - typedefs[mirror.simpleName] =
|
| + typedefs[dart2js_util.nameOf(mirror)] =
|
| entityMap[getDocgenObject(mirror).docName];
|
| }
|
| - } else {
|
| - var clazz = new Class(classMirror, this);
|
| + } else if (mirror is ClassMirror) {
|
| + var clazz = new Class(mirror, this);
|
|
|
| if (clazz.isError()) {
|
| - errors[classMirror.simpleName] = clazz;
|
| - } else if (classMirror.isClass) {
|
| - classes[classMirror.simpleName] = clazz;
|
| + errors[dart2js_util.nameOf(mirror)] = clazz;
|
| } else {
|
| - throw new ArgumentError(
|
| - '${classMirror.simpleName} - no class type match. ');
|
| + classes[dart2js_util.nameOf(mirror)] = clazz;
|
| }
|
| + } else {
|
| + throw new ArgumentError(
|
| + '${dart2js_util.nameOf(mirror)} - no class type match. ');
|
| }
|
| });
|
| - this.functions = _createMethods(exported['methods']
|
| - ..addAll(libraryMirror.functions), this);
|
| - this.variables = _createVariables(exported['variables']
|
| - ..addAll(libraryMirror.variables), this);
|
| + this.functions = _createMethods(_addAll(exported['methods'],
|
| + dart2js_util.methodsOf(libraryMirror.declarations)).values, this);
|
| + this.variables = _createVariables(_addAll(exported['variables'],
|
| + dart2js_util.variablesOf(libraryMirror.declarations)).values, this);
|
| }
|
|
|
| /// Look for the specified name starting with the current member, and
|
| @@ -1163,6 +1169,14 @@ class Library extends Indexable {
|
| return super.findElementInScope(name);
|
| }
|
|
|
| + /// Helper that maps [mirrors] to their simple name in map.
|
| + Map _addAll(Map map, Iterable<DeclarationMirror> mirrors) {
|
| + for (var mirror in mirrors) {
|
| + map[dart2js_util.nameOf(mirror)] = mirror;
|
| + }
|
| + return map;
|
| + }
|
| +
|
| /// For a library's [mirror], determine the name of the package (if any) we
|
| /// believe it came from (because of its file URI).
|
| ///
|
| @@ -1226,7 +1240,9 @@ class Library extends Indexable {
|
|
|
| String get name => docName;
|
|
|
| - String get docName => mirror.qualifiedName.replaceAll('.','-');
|
| + String get docName {
|
| + return dart2js_util.qualifiedNameOf(mirror).replaceAll('.','-');
|
| + }
|
|
|
| /// For the given library determine what items (if any) are exported.
|
| ///
|
| @@ -1246,9 +1262,12 @@ class Library extends Indexable {
|
| if (!showExport) {
|
| // Add all items, and then remove the hidden ones.
|
| // Ex: "export foo hide bar"
|
| - exports['classes'].addAll(export.targetLibrary.classes);
|
| - exports['methods'].addAll(export.targetLibrary.functions);
|
| - exports['variables'].addAll(export.targetLibrary.variables);
|
| + _addAll(exports['classes'],
|
| + dart2js_util.typesOf(export.targetLibrary.declarations));
|
| + _addAll(exports['methods'],
|
| + dart2js_util.methodsOf(export.targetLibrary.declarations));
|
| + _addAll(exports['variables'],
|
| + dart2js_util.variablesOf(export.targetLibrary.declarations));
|
| }
|
| for (CombinatorMirror combinator in export.combinators) {
|
| for (String identifier in combinator.identifiers) {
|
| @@ -1259,7 +1278,7 @@ class Library extends Indexable {
|
| // (such as the polymer package) are curently broken in this
|
| // way, so we just produce a warning.
|
| print('Warning identifier $identifier not found in library '
|
| - '${export.targetLibrary.qualifiedName}');
|
| + '${dart2js_util.qualifiedNameOf(export.targetLibrary)}');
|
| } else {
|
| var subMap = exports['classes'];
|
| if (declaration is MethodMirror) {
|
| @@ -1390,8 +1409,10 @@ class Class extends Indexable implements Comparable {
|
| new Class._possiblyDifferentOwner(classMirror.superclass, owner);
|
|
|
| interfaces = superinterfaces.toList();
|
| - variables = _createVariables(classMirror.variables, this);
|
| - methods = _createMethods(classMirror.methods, this);
|
| + variables = _createVariables(
|
| + dart2js_util.variablesOf(classMirror.declarations), this);
|
| + methods = _createMethods(
|
| + dart2js_util.methodsOf(classMirror.declarations), this);
|
| annotations = _createAnnotations(classMirror, _getOwningLibrary(owner));
|
| generics = _createGenerics(classMirror);
|
| isAbstract = classMirror.isAbstract;
|
| @@ -1537,7 +1558,7 @@ class Class extends Indexable implements Comparable {
|
| /// superclass of the private superclass.
|
| String validSuperclass() {
|
| if (superclass == null) return 'dart.core.Object';
|
| - if (superclass._isVisible) return superclass.qualifiedName;
|
| + if (superclass._isVisible) return dart2js_util.qualifiedNameOf(superclass);
|
| return superclass.validSuperclass();
|
| }
|
|
|
| @@ -1586,9 +1607,9 @@ class Typedef extends Indexable {
|
|
|
| Typedef._(TypedefMirror mirror, Library owningLibrary) : super(mirror) {
|
| owner = owningLibrary;
|
| - returnType = getDocgenObject(mirror.value.returnType).docName;
|
| + returnType = getDocgenObject(mirror.referent.returnType).docName;
|
| generics = _createGenerics(mirror);
|
| - parameters = _createParameters(mirror.value.parameters, owningLibrary);
|
| + parameters = _createParameters(mirror.referent.parameters, owningLibrary);
|
| annotations = _createAnnotations(mirror, owningLibrary);
|
| }
|
|
|
| @@ -1768,7 +1789,8 @@ class Method extends Indexable {
|
| if ((mirror as MethodMirror).isConstructor) {
|
| // We name constructors specially -- including the class name again and a
|
| // "-" to separate the constructor from its name (if any).
|
| - return '${owner.docName}.${mirror.owner.simpleName}-${mirror.simpleName}';
|
| + return '${owner.docName}.${dart2js_util.nameOf(mirror.owner)}-'
|
| + '${dart2js_util.nameOf(mirror)}';
|
| }
|
| return super.docName;
|
| }
|
| @@ -1843,11 +1865,11 @@ class Parameter extends MirrorBased {
|
| List<Annotation> annotations;
|
|
|
| Parameter(this.mirror, Library owningLibrary) {
|
| - name = mirror.simpleName;
|
| + name = dart2js_util.nameOf(mirror);
|
| isOptional = mirror.isOptional;
|
| isNamed = mirror.isNamed;
|
| hasDefaultValue = mirror.hasDefaultValue;
|
| - defaultValue = mirror.defaultValue;
|
| + defaultValue = '${mirror.defaultValue}';
|
| type = new Type(mirror.type, owningLibrary);
|
| annotations = _createAnnotations(mirror, owningLibrary);
|
| }
|
| @@ -1870,7 +1892,7 @@ class Generic extends MirrorBased {
|
| Generic(this.mirror);
|
| Map toMap() => {
|
| 'name': mirror.toString(),
|
| - 'type': mirror.upperBound.qualifiedName
|
| + 'type': dart2js_util.qualifiedNameOf(mirror.upperBound)
|
| };
|
| }
|
|
|
| @@ -1911,7 +1933,7 @@ class Type extends MirrorBased {
|
|
|
| /// Returns a list of [Type] objects constructed from TypeMirrors.
|
| List<Type> _createTypeGenerics(TypeMirror mirror) {
|
| - if (mirror is ClassMirror && !mirror.isTypedef) {
|
| + if (mirror is ClassMirror) {
|
| var innerList = [];
|
| mirror.typeArguments.forEach((e) {
|
| innerList.add(new Type(e, owningLibrary));
|
| @@ -1938,7 +1960,7 @@ class Annotation extends MirrorBased {
|
|
|
| Annotation(InstanceMirror originalMirror, this.owningLibrary) {
|
| mirror = originalMirror.type;
|
| - parameters = originalMirror.type.variables.values
|
| + parameters = dart2js_util.variablesOf(originalMirror.type.declarations)
|
| .where((e) => e.isFinal)
|
| .map((e) => originalMirror.getField(e.simpleName).reflectee)
|
| .where((e) => e != null)
|
|
|