| 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);
|
|
|