| Index: pkg/compiler/lib/src/closure.dart
|
| diff --git a/pkg/compiler/lib/src/closure.dart b/pkg/compiler/lib/src/closure.dart
|
| index 2d0ee9978392aaab089b9cd05f0a4bf5eb672b49..440e251dcc5acfe306f1451a333640397c205c34 100644
|
| --- a/pkg/compiler/lib/src/closure.dart
|
| +++ b/pkg/compiler/lib/src/closure.dart
|
| @@ -30,9 +30,15 @@ class ClosureTask extends CompilerTask {
|
|
|
| String get name => "Closure Simplifier";
|
|
|
| - ClosureClassMap computeClosureToClassMapping(
|
| - Element element, Node node, TreeElements elements) {
|
| + ClosureClassMap computeClosureToClassMapping(ResolvedAst resolvedAst) {
|
| return measure(() {
|
| + Element element = resolvedAst.element;
|
| + if (resolvedAst.kind != ResolvedAstKind.PARSED) {
|
| + return new ClosureClassMap(null, null, null, new ThisLocal(element));
|
| + }
|
| + Node node = resolvedAst.node;
|
| + TreeElements elements = resolvedAst.elements;
|
| +
|
| ClosureClassMap cached = closureMappingCache[node];
|
| if (cached != null) return cached;
|
|
|
| @@ -44,6 +50,8 @@ class ClosureTask extends CompilerTask {
|
| if (node is FunctionExpression) {
|
| translator.translateFunction(element, node);
|
| } else if (element.isSynthesized) {
|
| + reporter.internalError(
|
| + element, "Unexpected synthesized element: $element");
|
| return new ClosureClassMap(null, null, null, new ThisLocal(element));
|
| } else {
|
| assert(element.isField);
|
| @@ -123,7 +131,7 @@ class ClosureFieldElement extends ElementX
|
| bool get hasResolvedAst => hasTreeElements;
|
|
|
| ResolvedAst get resolvedAst {
|
| - return new ResolvedAst(this, null, treeElements);
|
| + return new ParsedResolvedAst(this, null, treeElements);
|
| }
|
|
|
| Expression get initializer {
|
| @@ -338,7 +346,7 @@ class SynthesizedCallMethodElementX extends BaseFunctionElementX
|
| FunctionExpression parseNode(Parsing parsing) => node;
|
|
|
| ResolvedAst get resolvedAst {
|
| - return new ResolvedAst(this, node, treeElements);
|
| + return new ParsedResolvedAst(this, node, treeElements);
|
| }
|
|
|
| Element get analyzableElement => closureClass.methodElement.analyzableElement;
|
|
|