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

Unified Diff: pkg/docgen/lib/docgen.dart

Issue 21699002: annotation with parameters. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/docgen/lib/docgen.dart
diff --git a/pkg/docgen/lib/docgen.dart b/pkg/docgen/lib/docgen.dart
index 8a182b08d525d68bdd770951dd0acaf1aa0232fd..5234fa7f71758c88f3899324b3cf00f9034d32fb 100644
--- a/pkg/docgen/lib/docgen.dart
+++ b/pkg/docgen/lib/docgen.dart
@@ -238,7 +238,7 @@ Library generateLibrary(dart2js.Dart2JsLibraryMirror library) {
var result = new Library(library.qualifiedName, _commentToHtml(library),
_variables(library.variables),
_methods(library.functions),
- _classes(library.classes), _isPrivate(library));
+ _classes(library.classes), _isHidden(library));
logger.fine('Generated library for ${result.name}');
return result;
}
@@ -269,13 +269,14 @@ bool _isLibraryPrivate(LibraryMirror mirror) {
/**
* A declaration is private if itself is private, or the owner is private.
*/
-bool _isPrivate(DeclarationMirror mirror) {
+// Issue(12202) - A declaration is public even if it's owner is private.
+bool _isHidden(DeclarationMirror mirror) {
if (mirror is LibraryMirror) {
return _isLibraryPrivate(mirror);
} else if (mirror.owner is LibraryMirror) {
return (mirror.isPrivate || _isLibraryPrivate(mirror.owner));
} else {
- return (mirror.isPrivate || _isPrivate(mirror.owner));
+ return (mirror.isPrivate || _isHidden(mirror.owner));
}
}
@@ -287,9 +288,19 @@ bool _isVisible(Indexable item) {
* Returns a list of meta annotations assocated with a mirror.
*/
List<String> _annotations(DeclarationMirror mirror) {
- var annotations = mirror.metadata.where((e) =>
+ var annotationMirrors = mirror.metadata.where((e) =>
e is dart2js.Dart2JsConstructedConstantMirror);
- return annotations.map((e) => e.type.qualifiedName).toList();
+ var annotations = [];
+ annotationMirrors.forEach((annotation) {
+ var parameterList = annotation.type.variables.values
+ .where((e) => e.isFinal)
+ .map((e) => annotation.getField(e.simpleName).reflectee)
+ .where((e) => e != null)
+ .toList();
+ annotations.add(new Annotation(annotation.type.qualifiedName,
+ parameterList));
+ });
+ return annotations;
}
/**
@@ -342,11 +353,11 @@ Map<String, Variable> _variables(Map<String, VariableMirror> mirrorMap) {
// a filter. Issue(#9590).
mirrorMap.forEach((String mirrorName, VariableMirror mirror) {
_currentMember = mirror;
- if (_includePrivate || !_isPrivate(mirror)) {
+ if (_includePrivate || !_isHidden(mirror)) {
entityMap[mirror.qualifiedName] = new Variable(mirrorName, mirror.isFinal,
mirror.isStatic, mirror.isConst, _type(mirror.type),
_commentToHtml(mirror), _annotations(mirror), mirror.qualifiedName,
- _isPrivate(mirror), mirror.owner.qualifiedName);
+ _isHidden(mirror), mirror.owner.qualifiedName);
data[mirrorName] = entityMap[mirror.qualifiedName];
}
});
@@ -359,7 +370,7 @@ Map<String, Variable> _variables(Map<String, VariableMirror> mirrorMap) {
MethodGroup _methods(Map<String, MethodMirror> mirrorMap) {
var group = new MethodGroup();
mirrorMap.forEach((String mirrorName, MethodMirror mirror) {
- if (_includePrivate || !_isPrivate(mirror)) {
+ if (_includePrivate || !_isHidden(mirror)) {
group.addMethod(mirror);
}
});
@@ -380,7 +391,7 @@ Class _class(ClassMirror mirror) {
clazz = new Class(mirror.simpleName, superclass, _commentToHtml(mirror),
interfaces.toList(), _variables(mirror.variables),
_methods(mirror.methods), _annotations(mirror), _generics(mirror),
- mirror.qualifiedName, _isPrivate(mirror), mirror.owner.qualifiedName);
+ mirror.qualifiedName, _isHidden(mirror), mirror.owner.qualifiedName);
entityMap[mirror.qualifiedName] = clazz;
}
return clazz;
@@ -636,14 +647,14 @@ class Class extends Indexable {
'qualifiedname': qualifiedName,
'comment': comment,
'superclass': validSuperclass(),
- 'implements': new List.from(interfaces.where(_isVisible)
- .map((e) => e.qualifiedName)),
- 'subclass': new List.from(subclasses),
+ 'implements': interfaces.where(_isVisible)
+ .map((e) => e.qualifiedName).toList(),
+ 'subclass': subclasses,
'variables': recurseMap(variables),
'inheritedvariables': recurseMap(inheritedVariables),
'methods': methods.toMap(),
'inheritedmethods': inheritedMethods.toMap(),
- 'annotations': new List.from(annotations),
+ 'annotations': annotations.map((a) => a.toMap()).toList(),
'generics': recurseMap(generics)
};
}
@@ -677,7 +688,7 @@ class ClassGroup {
entityMap[mirror.qualifiedName] = new Typedef(mirror.simpleName,
mirror.value.returnType.qualifiedName, _commentToHtml(mirror),
_generics(mirror), _parameters(mirror.value.parameters),
- _annotations(mirror), mirror.qualifiedName, _isPrivate(mirror),
+ _annotations(mirror), mirror.qualifiedName, _isHidden(mirror),
mirror.owner.qualifiedName);
typedefs[mirror.simpleName] = entityMap[mirror.qualifiedName];
}
@@ -700,13 +711,13 @@ class ClassGroup {
}
Map toMap() => {
- 'abstract': new List.from(abstractClasses.values
- .where(_isVisible).map((e) => e.qualifiedName)),
- 'class': new List.from(regularClasses.values
- .where(_isVisible).map((e) => e.qualifiedName)),
+ 'abstract': abstractClasses.values.where(_isVisible)
+ .map((e) => e.qualifiedName).toList(),
+ 'class': regularClasses.values.where(_isVisible)
+ .map((e) => e.qualifiedName).toList(),
'typedef': recurseMap(typedefs),
- 'error': new List.from(errors.values
- .where(_isVisible).map((e) => e.qualifiedName))
+ 'error': errors.values.where(_isVisible)
+ .map((e) => e.qualifiedName).toList()
};
}
@@ -732,7 +743,7 @@ class Typedef extends Indexable {
'comment': comment,
'return': returnType,
'parameters': recurseMap(parameters),
- 'annotations': new List.from(annotations),
+ 'annotations': annotations.map((a) => a.toMap()).toList(),
'generics': recurseMap(generics)
};
}
@@ -763,7 +774,7 @@ class Variable extends Indexable {
'static': isStatic.toString(),
'constant': isConst.toString(),
'type': new List.filled(1, type.toMap()),
- 'annotations': new List.from(annotations)
+ 'annotations': annotations.map((a) => a.toMap()).toList()
};
}
@@ -798,7 +809,7 @@ class Method extends Indexable {
'constant': isConst.toString(),
'return': new List.filled(1, returnType.toMap()),
'parameters': recurseMap(parameters),
- 'annotations': new List.from(annotations)
+ 'annotations': annotations.map((a) => a.toMap()).toList()
};
}
@@ -817,7 +828,7 @@ class MethodGroup {
var method = new Method(mirror.simpleName, mirror.isStatic,
mirror.isAbstract, mirror.isConstConstructor, _type(mirror.returnType),
_commentToHtml(mirror), _parameters(mirror.parameters),
- _annotations(mirror), mirror.qualifiedName, _isPrivate(mirror),
+ _annotations(mirror), mirror.qualifiedName, _isHidden(mirror),
mirror.owner.qualifiedName);
entityMap[mirror.qualifiedName] = method;
_currentMember = mirror;
@@ -884,7 +895,7 @@ class Parameter {
'default': hasDefaultValue.toString(),
'type': new List.filled(1, type.toMap()),
'value': defaultValue,
- 'annotations': new List.from(annotations)
+ 'annotations': annotations.map((a) => a.toMap()).toList()
};
}
@@ -941,6 +952,21 @@ class Type {
Map toMap() => {
'outer': outer,
- 'inner': new List.from(inner.map((e) => e.toMap()))
+ 'inner': inner.map((e) => e.toMap()).toList()
+ };
+}
+
+/**
+ * Holds the name of the annotation, and its parameters.
+ */
+class Annotation {
+ String qualifiedName;
+ List<String> parameters;
+
+ Annotation(this.qualifiedName, this.parameters);
+
+ Map toMap() => {
+ 'name': qualifiedName,
+ 'parameters': parameters
};
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698