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

Unified Diff: sdk/lib/_internal/lib/js_mirrors.dart

Issue 160343002: Implement reflection on annotations of parameters. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comment. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sdk/lib/_internal/lib/js_helper.dart ('k') | tests/lib/mirrors/parameter_annotation_mirror_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/_internal/lib/js_mirrors.dart
diff --git a/sdk/lib/_internal/lib/js_mirrors.dart b/sdk/lib/_internal/lib/js_mirrors.dart
index 067b61633620b80888548e8e3af49fdd3203870b..9934b8264f44c0ba02540bb6737fc63ac52e674f 100644
--- a/sdk/lib/_internal/lib/js_mirrors.dart
+++ b/sdk/lib/_internal/lib/js_mirrors.dart
@@ -2167,13 +2167,15 @@ class JsMethodMirror extends JsDeclarationMirror implements MethodMirror {
bool isNamed = info.areOptionalParametersNamed;
for (JsParameterMirror parameter in type.parameters) {
var name = info.parameterName(i);
+ List<int> annotations = info.parameterMetadataAnnotations(i);
var p;
if (i < info.requiredParameterCount) {
- p = new JsParameterMirror(name, this, parameter._type);
+ p = new JsParameterMirror(name, this, parameter._type,
+ metadataList: annotations);
} else {
var defaultValue = info.defaultValue(i);
p = new JsParameterMirror(
- name, this, parameter._type,
+ name, this, parameter._type, metadataList: annotations,
isOptional: true, isNamed: isNamed, defaultValue: defaultValue);
}
formals[i++] = p;
@@ -2268,10 +2270,13 @@ class JsParameterMirror extends JsDeclarationMirror implements ParameterMirror {
final int _defaultValue;
+ final List<int> metadataList;
+
JsParameterMirror(String unmangledName,
this.owner,
this._type,
- {this.isOptional: false,
+ {this.metadataList: const <int>[],
+ this.isOptional: false,
this.isNamed: false,
defaultValue})
: _defaultValue = defaultValue,
@@ -2298,8 +2303,10 @@ class JsParameterMirror extends JsDeclarationMirror implements ParameterMirror {
return hasDefaultValue ? reflect(getMetadata(_defaultValue)) : null;
}
- // TODO(ahe): Implement this.
- List<InstanceMirror> get metadata => throw new UnimplementedError();
+ List<InstanceMirror> get metadata {
+ preserveMetadata();
+ return metadataList.map((int i) => reflect(getMetadata(i))).toList();
+ }
}
class JsTypedefMirror extends JsDeclarationMirror implements TypedefMirror {
@@ -2349,7 +2356,7 @@ class BrokenClassMirror {
InstanceMirror newInstance(
Symbol constructorName,
List positionalArguments,
- [Map<Symbol,dynamic> namedArguments]) => throw new UnimplementedError();
+ [Map<Symbol, dynamic> namedArguments]) => throw new UnimplementedError();
Function operator [](Symbol name) => throw new UnimplementedError();
InstanceMirror invoke(Symbol memberName,
List positionalArguments,
« no previous file with comments | « sdk/lib/_internal/lib/js_helper.dart ('k') | tests/lib/mirrors/parameter_annotation_mirror_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698