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

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

Issue 9283014: Implement field parameter for generative constructors. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' 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
===================================================================
--- frog/leg/ssa/builder.dart (revision 3542)
+++ frog/leg/ssa/builder.dart (working copy)
@@ -241,14 +241,11 @@
List bodyCallInputs = <HInstruction>[];
bodyCallInputs.add(newObject);
for (Link link = parameters.nodes; !link.isEmpty(); link = link.tail) {
- Link<Node> identifierLink = link.head.definitions.nodes;
+ Link<Node> nodeLink = link.head.definitions.nodes;
// We expect exactly one identifier.
- assert(!identifierLink.isEmpty() && identifierLink.tail.isEmpty());
- if (identifierLink.head is !Identifier) {
- compiler.unimplemented("SsaBuilder.buildFactory non-identifier");
- }
- Identifier name = identifierLink.head;
- Element parameterElement = elements[name];
+ assert(!nodeLink.isEmpty() && nodeLink.tail.isEmpty());
+ Node current = nodeLink.head;
+ Element parameterElement = elements[current];
HInstruction currentValue = definitions[parameterElement];
bodyCallInputs.add(currentValue);
}
@@ -270,7 +267,7 @@
add(thisDefinition);
}
FunctionExpression function = functionElement.parseNode(compiler, compiler);
- visitParameterValues(function.parameters);
+ handleParameterValues(function.parameters);
close(new HGoto()).addSuccessor(block);
open(block);
@@ -334,21 +331,17 @@
if (node !== null) node.accept(this);
}
- visitParameterValues(NodeList parameters) {
+ handleParameterValues(NodeList parameters) {
int parameterIndex = 0;
for (Link<Node> link = parameters.nodes;
!link.isEmpty();
link = link.tail) {
VariableDefinitions container = link.head;
- Link<Node> identifierLink = container.definitions.nodes;
+ Link<Node> nodeLink = container.definitions.nodes;
// The identifier link must contain exactly one argument.
- assert(!identifierLink.isEmpty() && identifierLink.tail.isEmpty());
- if (identifierLink.head is !Identifier) {
- compiler.unimplemented(
- "SsaBuilder.visitParameterValues non-identifier", node: parameters);
- }
- Identifier parameterId = identifierLink.head;
- VariableElement element = elements[parameterId];
+ assert(!nodeLink.isEmpty() && nodeLink.tail.isEmpty());
+ Node current = nodeLink.head;
+ VariableElement element = elements[current];
HParameterValue parameter = new HParameterValue(element);
add(parameter);
definitions[element] = parameter;

Powered by Google App Engine
This is Rietveld 408576698