| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library closureToClassMapper; | 5 library closureToClassMapper; |
| 6 | 6 |
| 7 import "elements/elements.dart"; | 7 import "elements/elements.dart"; |
| 8 import "dart2jslib.dart"; | 8 import "dart2jslib.dart"; |
| 9 import "dart_types.dart"; | 9 import "dart_types.dart"; |
| 10 import "scanner/scannerlib.dart" show Token; | 10 import "scanner/scannerlib.dart" show Token; |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 this.thisElement) | 257 this.thisElement) |
| 258 : this.freeVariableMapping = new Map<Element, Element>(), | 258 : this.freeVariableMapping = new Map<Element, Element>(), |
| 259 this.capturedFieldMapping = new Map<Element, Element>(), | 259 this.capturedFieldMapping = new Map<Element, Element>(), |
| 260 this.capturingScopes = new Map<Node, ClosureScope>(), | 260 this.capturingScopes = new Map<Node, ClosureScope>(), |
| 261 this.usedVariablesInTry = new Set<Element>(), | 261 this.usedVariablesInTry = new Set<Element>(), |
| 262 this.parametersWithSentinel = new Map<Element, Element>(); | 262 this.parametersWithSentinel = new Map<Element, Element>(); |
| 263 | 263 |
| 264 bool isClosure() => closureElement != null; | 264 bool isClosure() => closureElement != null; |
| 265 | 265 |
| 266 bool isVariableCaptured(Element element) { | 266 bool isVariableCaptured(Element element) { |
| 267 freeVariableMapping.containsKey(element); | 267 return freeVariableMapping.containsKey(element); |
| 268 } | 268 } |
| 269 | 269 |
| 270 bool isVariableBoxed(Element element) { | 270 bool isVariableBoxed(Element element) { |
| 271 Element copy = freeVariableMapping[element]; | 271 Element copy = freeVariableMapping[element]; |
| 272 return copy != null && !copy.isMember(); | 272 return copy != null && !copy.isMember(); |
| 273 } | 273 } |
| 274 | 274 |
| 275 void forEachCapturedVariable(void f(Element local, Element field)) { | 275 void forEachCapturedVariable(void f(Element local, Element field)) { |
| 276 freeVariableMapping.forEach((variable, copy) { | 276 freeVariableMapping.forEach((variable, copy) { |
| 277 if (variable is BoxElement) return; | 277 if (variable is BoxElement) return; |
| (...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 825 } | 825 } |
| 826 | 826 |
| 827 visitTryStatement(TryStatement node) { | 827 visitTryStatement(TryStatement node) { |
| 828 // TODO(ngeoffray): implement finer grain state. | 828 // TODO(ngeoffray): implement finer grain state. |
| 829 bool oldInTryStatement = inTryStatement; | 829 bool oldInTryStatement = inTryStatement; |
| 830 inTryStatement = true; | 830 inTryStatement = true; |
| 831 node.visitChildren(this); | 831 node.visitChildren(this); |
| 832 inTryStatement = oldInTryStatement; | 832 inTryStatement = oldInTryStatement; |
| 833 } | 833 } |
| 834 } | 834 } |
| OLD | NEW |