Chromium Code Reviews| Index: pkg/compiler/lib/src/compiler.dart |
| diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart |
| index 4671212ffad60e10fdac870bc96917479810655b..f3f6977250f68d5f0b41269e5d40b91036484f00 100644 |
| --- a/pkg/compiler/lib/src/compiler.dart |
| +++ b/pkg/compiler/lib/src/compiler.dart |
| @@ -25,6 +25,7 @@ abstract class WorkItem { |
| * Invariant: [element] must be a declaration element. |
| */ |
| final AstElement element; |
| + |
| TreeElements get resolutionTree; |
| WorkItem(this.element, this.compilationContext) { |
| @@ -186,16 +187,26 @@ class CodegenRegistry extends Registry { |
| /// [WorkItem] used exclusively by the [CodegenEnqueuer]. |
| class CodegenWorkItem extends WorkItem { |
| Registry registry; |
| - final TreeElements resolutionTree; |
| - CodegenWorkItem(AstElement element, |
| - ItemCompilationContext compilationContext) |
| - : this.resolutionTree = element.resolvedAst.elements, |
| - super(element, compilationContext) { |
| - assert(invariant(element, resolutionTree != null, |
| + factory CodegenWorkItem( |
| + Compiler compiler, |
| + AstElement element, |
| + ItemCompilationContext compilationContext) { |
| + assert(invariant(element, |
|
asgerf
2015/05/06 12:57:39
Maybe we should add a comment explaining in more d
Johnni Winther
2015/05/07 13:23:08
Done.
|
| + compiler.enqueuer.resolution.hasBeenResolved(element), |
| + message: "$element has not been resolved.")); |
| + assert(invariant(element, element.resolvedAst.elements != null, |
| message: 'Resolution tree is null for $element in codegen work item')); |
| + return new CodegenWorkItem.internal(element, compilationContext); |
| } |
| + CodegenWorkItem.internal( |
| + AstElement element, |
| + ItemCompilationContext compilationContext) |
| + : super(element, compilationContext); |
| + |
| + TreeElements get resolutionTree => element.resolvedAst.elements; |
| + |
| void run(Compiler compiler, CodegenEnqueuer world) { |
| if (world.isProcessed(element)) return; |