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

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

Issue 9243011: Implement named constructors and resolving of redirecting constructors and super-initializers. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rename field. Created 8 years, 11 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 4a1446ec3ad0e434e916df8fa1d59dc5c4beb72d..bdae0379b6d02ff8978396c75c303186f0c8ac68 100644
--- a/frog/leg/ssa/builder.dart
+++ b/frog/leg/ssa/builder.dart
@@ -197,6 +197,8 @@ class SsaBuilder implements Visitor {
FunctionExpression function = functionElement.node;
NodeList initializers = function.initializers;
NodeList parameters = function.parameters;
+ Send redirectConstructor;
+ Send superConstructor;
// Run through the initializers.
if (initializers !== null) {
for (Link<Node> link = initializers.nodes;
@@ -205,13 +207,14 @@ class SsaBuilder implements Visitor {
assert(link.head is Send);
if (link.head is !SendSet) {
compiler.unimplemented('SsaBuilder.buildFactory super-init');
+ } else {
+ SendSet init = link.head;
+ Link<Node> arguments = init.arguments;
+ assert(!arguments.isEmpty() && arguments.tail.isEmpty());
+ visit(arguments.head);
+ HInstruction value = pop();
+ updateDefinition(init, value);
}
- SendSet init = link.head;
- Link<Node> arguments = init.arguments;
- assert(!arguments.isEmpty() && arguments.tail.isEmpty());
- visit(arguments.head);
- HInstruction value = pop();
- updateDefinition(init, value);
}
}
@@ -241,8 +244,7 @@ class SsaBuilder implements Visitor {
// We expect exactly one identifier.
assert(!identifierLink.isEmpty() && identifierLink.tail.isEmpty());
if (identifierLink.head is !Identifier) {
- compiler.unimplemented(
- "SsaBuilder.buildFactory non-identifier");
+ compiler.unimplemented("SsaBuilder.buildFactory non-identifier");
}
Identifier name = identifierLink.head;
Element parameterElement = elements[name];
@@ -805,7 +807,7 @@ class SsaBuilder implements Visitor {
if (send.receiver == null) {
receiver = thisDefinition;
if (receiver === null) {
- compiler.unimplemented("Ssa.generateGetter.", node: send);
+ compiler.unimplemented("SsaBuilder.generateGetter.", node: send);
}
} else {
visit(send.receiver);

Powered by Google App Engine
This is Rietveld 408576698