| Index: pkg/compiler/lib/src/compiler.dart
|
| diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
|
| index d716c3e4eaf0e593ddf23b28f53a1cc77a066dd8..8360a5dbe422d16b8ca813293b2a4bd503ae4ae4 100644
|
| --- a/pkg/compiler/lib/src/compiler.dart
|
| +++ b/pkg/compiler/lib/src/compiler.dart
|
| @@ -26,8 +26,6 @@ abstract class WorkItem {
|
| */
|
| final AstElement element;
|
|
|
| - TreeElements get resolutionTree;
|
| -
|
| WorkItem(this.element, this.compilationContext) {
|
| assert(invariant(element, element.isDeclaration));
|
| }
|
| @@ -37,7 +35,7 @@ abstract class WorkItem {
|
|
|
| /// [WorkItem] used exclusively by the [ResolutionEnqueuer].
|
| class ResolutionWorkItem extends WorkItem {
|
| - TreeElements resolutionTree;
|
| + bool _isAnalyzed = false;
|
|
|
| ResolutionWorkItem(AstElement element,
|
| ItemCompilationContext compilationContext)
|
| @@ -45,11 +43,11 @@ class ResolutionWorkItem extends WorkItem {
|
|
|
| WorldImpact run(Compiler compiler, ResolutionEnqueuer world) {
|
| WorldImpact impact = compiler.analyze(this, world);
|
| - resolutionTree = element.resolvedAst.elements;
|
| + _isAnalyzed = true;
|
| return impact;
|
| }
|
|
|
| - bool isAnalyzed() => resolutionTree != null;
|
| + bool get isAnalyzed => _isAnalyzed;
|
| }
|
|
|
| // TODO(johnniwinther): Split this class into interface and implementation.
|
| @@ -951,6 +949,7 @@ abstract class Compiler implements DiagnosticListener {
|
| ParserTask parser;
|
| PatchParserTask patchParser;
|
| LibraryLoaderTask libraryLoader;
|
| + SerializationTask serialization;
|
| ResolverTask resolver;
|
| closureMapping.ClosureTask closureToClassMapper;
|
| TypeCheckerTask checker;
|
| @@ -1116,6 +1115,7 @@ abstract class Compiler implements DiagnosticListener {
|
|
|
| tasks = [
|
| libraryLoader = new LibraryLoaderTask(this),
|
| + serialization = new SerializationTask(this),
|
| scanner = new ScannerTask(this),
|
| dietParser = new DietParserTask(this),
|
| parser = new ParserTask(this),
|
| @@ -1816,7 +1816,7 @@ abstract class Compiler implements DiagnosticListener {
|
|
|
| WorldImpact analyze(ResolutionWorkItem work, ResolutionEnqueuer world) {
|
| assert(invariant(work.element, identical(world, enqueuer.resolution)));
|
| - assert(invariant(work.element, !work.isAnalyzed(),
|
| + assert(invariant(work.element, !work.isAnalyzed,
|
| message: 'Element ${work.element} has already been analyzed'));
|
| if (shouldPrintProgress) {
|
| // TODO(ahe): Add structured diagnostics to the compiler API and
|
| @@ -2240,6 +2240,20 @@ class SourceSpan implements Spannable {
|
| return f(beginOffset, endOffset);
|
| }
|
|
|
| + int get hashCode {
|
| + return 13 * uri.hashCode +
|
| + 17 * begin.hashCode +
|
| + 19 * end.hashCode;
|
| + }
|
| +
|
| + bool operator ==(other) {
|
| + if (identical(this, other)) return true;
|
| + if (other is! SourceSpan) return false;
|
| + return uri == other.uri &&
|
| + begin == other.begin &&
|
| + end == other.end;
|
| + }
|
| +
|
| String toString() => 'SourceSpan($uri, $begin, $end)';
|
| }
|
|
|
| @@ -2414,22 +2428,22 @@ class AnyLocation implements CodeLocation {
|
| class _CompilerCoreTypes implements CoreTypes {
|
| final Compiler compiler;
|
|
|
| - ClassElementX objectClass;
|
| - ClassElementX boolClass;
|
| - ClassElementX numClass;
|
| - ClassElementX intClass;
|
| - ClassElementX doubleClass;
|
| - ClassElementX stringClass;
|
| - ClassElementX functionClass;
|
| - ClassElementX nullClass;
|
| - ClassElementX listClass;
|
| - ClassElementX typeClass;
|
| - ClassElementX mapClass;
|
| - ClassElementX symbolClass;
|
| - ClassElementX stackTraceClass;
|
| - ClassElementX futureClass;
|
| - ClassElementX iterableClass;
|
| - ClassElementX streamClass;
|
| + ClassElement objectClass;
|
| + ClassElement boolClass;
|
| + ClassElement numClass;
|
| + ClassElement intClass;
|
| + ClassElement doubleClass;
|
| + ClassElement stringClass;
|
| + ClassElement functionClass;
|
| + ClassElement nullClass;
|
| + ClassElement listClass;
|
| + ClassElement typeClass;
|
| + ClassElement mapClass;
|
| + ClassElement symbolClass;
|
| + ClassElement stackTraceClass;
|
| + ClassElement futureClass;
|
| + ClassElement iterableClass;
|
| + ClassElement streamClass;
|
|
|
| _CompilerCoreTypes(this.compiler);
|
|
|
|
|