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

Unified Diff: frog/leg/ssa/builder.dart

Issue 9454014: Support named parameters for super initializers and redirections. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Use addStaticSendArguments. Created 8 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
Index: frog/leg/ssa/builder.dart
diff --git a/frog/leg/ssa/builder.dart b/frog/leg/ssa/builder.dart
index d4b429f7cde76aceb76d7eedb2c8dfd1570584b1..2cbfea59acadb822023983b1bcf297f357c05883 100644
--- a/frog/leg/ssa/builder.dart
+++ b/frog/leg/ssa/builder.dart
@@ -707,25 +707,6 @@ class SsaBuilder implements Visitor {
}
/**
- * Call [f] for every argument and parameter element of [target]
- * that is used in the invocation [send].
- */
- forEachArgument(Send send, FunctionElement target,
- f(VariableElement parameter, Node argument)) {
- final FunctionParameters parameters = target.computeParameters(compiler);
- Link<Element> parameterElements = parameters.requiredParameters;
- for (Link<Node> arguments = send.arguments;
- !arguments.isEmpty();
- arguments = arguments.tail) {
- if (parameterElements.isEmpty()) {
- parameterElements = parameters.optionalParameters;
- }
- f(parameterElements.head, arguments.head);
- parameterElements = parameterElements.tail;
- };
- }
-
- /**
* Run through the initializers and inline all field initializers. Returns the
* next constructor to analyze.
*/
@@ -742,10 +723,13 @@ class SsaBuilder implements Visitor {
nextConstructor = elements[call];
// Visit arguments and map the corresponding parameter value to
// the resulting HInstruction value.
- forEachArgument(call, nextConstructor, (parameter, node) {
- visit(node);
- HInstruction value = pop();
- localsHandler.updateLocal(parameter, value);
+ List<HInstruction> arguments = new List<HInstruction>();
+ addStaticSendArgumentsToList(call, nextConstructor, arguments);
+ int index = 0;
+ FunctionParameters parameters =
+ nextConstructor.computeParameters(compiler);
+ parameters.forEachParameter((parameter) {
+ localsHandler.updateLocal(parameter, arguments[index++]);
});
} else {
// A field initializer.

Powered by Google App Engine
This is Rietveld 408576698