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

Unified Diff: pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart

Issue 1311613005: Add ParameterMirror.isInitializingFormal to dart:mirrors Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 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 | pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart
index ebd7d1a1d2ad9df200e6962dcb69a28746240474..ac95afc4e8600624d07c58cf575fde30bd03698b 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart
@@ -67,8 +67,11 @@ class ContainerBuilder extends CodeEmitterHelper {
// ...
// O. First parameter name (if needed for reflection or Function.apply).
// ...
- // P. Unmangled name (if reflectable).
- // P+1. First metadata (if reflectable).
+ // P. Whether the first argument is field initialization parameter
+ // (if reflectable and a constructor)
+ // ...
+ // Q. Unmangled name (if reflectable).
+ // Q+1. First metadata (if reflectable).
// ...
// TODO(ahe): Consider one of the parameter counts can be replaced by the
// length property of the JavaScript function object.
@@ -151,7 +154,10 @@ class ContainerBuilder extends CodeEmitterHelper {
}
if (canBeReflected) {
jsAst.LiteralString reflectionName;
+ List<jsAst.LiteralBool> argumentsInstantiatingFields = new List();
if (member.isConstructor) {
+ member.functionSignature.forEachParameter((element) =>
+ argumentsInstantiatingFields.add(js.boolean(element is InitializingFormalElement)));
// TODO(herhut): This registers name as a mangled name. Do we need this
// given that we use a different name below?
emitter.getReflectionName(member, name);
@@ -161,8 +167,11 @@ class ContainerBuilder extends CodeEmitterHelper {
} else {
reflectionName =
js.string(namer.privateName(member.memberName));
+ member.functionSignature.forEachParameter((element) =>
+ argumentsInstantiatingFields.add(js.boolean(false)));
}
expressions
+ ..addAll(argumentsInstantiatingFields)
..add(reflectionName)
..addAll(task.metadataCollector.computeMetadata(member));
} else if (isClosure && canBeApplied) {
« no previous file with comments | « no previous file | pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698