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

Unified Diff: pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart

Issue 1021813002: Redo "Use an explicit 'this' parameter instead of 'This' nodes." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 9 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 | « pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart
diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart
index 3c8240979efaac761988931b82520a48974a4e64..0b115cbd533363f596fefefd3171c8cffa882442 100644
--- a/pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart
+++ b/pkg/compiler/lib/src/cps_ir/cps_ir_integrity.dart
@@ -102,21 +102,36 @@ class CheckCpsIntegrity extends RecursiveVisitor {
@override
visitFunctionDefinition(FunctionDefinition node) {
+ if (node.thisParameter != null) {
+ markAsSeen(node.thisParameter);
+ }
node.parameters.forEach(markAsSeen);
if (node.body != null) {
- doInScope(node.parameters, node, () => visit(node.body));
+ doInOptionalScope(node.thisParameter, node,
+ () => doInScope(node.parameters, node, () => visit(node.body)));
}
}
@override
visitConstructorDefinition(ConstructorDefinition node) {
+ if (node.thisParameter != null) {
+ markAsSeen(node.thisParameter);
+ }
node.parameters.forEach(markAsSeen);
doInScope(node.parameters, node, () {
if (node.initializers != null) node.initializers.forEach(visit);
- if (node.body != null) visit(node.body);
+ if (node.body != null) {
+ doInOptionalScope(node.thisParameter, node, () => visit(node.body));
+ }
});
}
+ doInOptionalScope(Parameter parameter, Node node, action) {
+ return (parameter == null)
+ ? action()
+ : doInScope([parameter], node, action);
+ }
+
@override
visitDeclareFunction(DeclareFunction node) {
markAsSeen(node.variable);
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart ('k') | pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698