Index: pkg/kernel/lib/transformations/closure/context.dart |
diff --git a/pkg/kernel/lib/transformations/closure/context.dart b/pkg/kernel/lib/transformations/closure/context.dart |
index 79ceaefde95039f55d449563d65171a32e4e1f4b..3e4ed1790904785fa56979252c480ee6682998b1 100644 |
--- a/pkg/kernel/lib/transformations/closure/context.dart |
+++ b/pkg/kernel/lib/transformations/closure/context.dart |
@@ -129,10 +129,11 @@ class LocalContext extends Context { |
Accessor get accessor => new VariableAccessor(self, null, TreeNode.noOffset); |
void extend(VariableDeclaration variable, Expression value) { |
- // Increase index by 1, because the parent occupies item 0, and all other |
- // variables are therefore shifted by 1. |
+ // Increase index by 2, because the type arguments vector occupies position |
+ // 0, the parent occupies position 1, and all other variables are therefore |
+ // shifted by 2. |
VectorSet initializer = |
- new VectorSet(expression, variables.length + 1, value); |
+ new VectorSet(expression, variables.length + 2, value); |
value.parent = initializer; |
converter.rewriter.insertExtendContext(initializer); |
@@ -150,21 +151,23 @@ class LocalContext extends Context { |
Expression lookup(VariableDeclaration variable) { |
var index = variables.indexOf(variable); |
- // Increase index by 1 in case of success, because the parent occupies |
- // item 0, and all other variables are therefore shifted by 1. |
+ // Increase index by 2 in case of success, because the type arguments vector |
+ // occupies position 0, the parent occupies position 1, and all other |
+ // variables are therefore shifted by 2. |
return index == -1 |
? parent.lookup(variable) |
- : new VectorGet(expression, index + 1); |
+ : new VectorGet(expression, index + 2); |
} |
Expression assign(VariableDeclaration variable, Expression value, |
{bool voidContext: false}) { |
var index = variables.indexOf(variable); |
- // Increase index by 1 in case of success, because the parent occupies |
- // item 0, and all other variables are therefore shifted by 1. |
+ // Increase index by 2 in case of success, because the type arguments vector |
+ // occupies position 0, the parent occupies position 1, and all other |
+ // variables are therefore shifted by 2. |
return index == -1 |
? parent.assign(variable, value, voidContext: voidContext) |
- : new VectorSet(expression, index + 1, value); |
+ : new VectorSet(expression, index + 2, value); |
} |
Context toNestedContext([Accessor accessor]) { |
@@ -210,12 +213,13 @@ class NestedContext extends Context { |
for (var variables in variabless) { |
var index = variables.indexOf(variable); |
if (index != -1) { |
- // Increase index by 1, because the parent occupies item 0, and all |
- // other variables are therefore shifted by 1. |
- return new VectorGet(context, index + 1); |
+ // Increase index by 2 in case of success, because the type arguments |
+ // vector occupies position 0, the parent occupies item 1, and all other |
+ // variables are therefore shifted by 2. |
+ return new VectorGet(context, index + 2); |
} |
- // Item 0 of a context always points to its parent. |
- context = new VectorGet(context, 0); |
+ // Item 1 of a context always points to its parent. |
+ context = new VectorGet(context, 1); |
} |
throw 'Unbound NestedContext.lookup($variable)'; |
} |
@@ -226,12 +230,13 @@ class NestedContext extends Context { |
for (List<VariableDeclaration> variables in variabless) { |
var index = variables.indexOf(variable); |
if (index != -1) { |
- // Increase index by 1, because the parent occupies item 0, and all |
- // other variables are therefore shifted by 1. |
- return new VectorSet(context, index + 1, value); |
+ // Increase index by 2 in case of success, because the type arguments |
+ // vector occupies position 0, the parent occupies item 1, and all other |
+ // variables are therefore shifted by 2. |
+ return new VectorSet(context, index + 2, value); |
} |
- // Item 0 of a context always points to its parent. |
- context = new VectorGet(context, 0); |
+ // Item 1 of a context always points to its parent. |
+ context = new VectorGet(context, 1); |
} |
throw 'Unbound NestedContext.lookup($variable)'; |
} |