| Index: pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart
|
| diff --git a/pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart b/pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart
|
| index d25426ec8756b5e7093ada4bdc9d26106697ad47..cc8e3b2e114a4c532527502875118847cf28910f 100644
|
| --- a/pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart
|
| +++ b/pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart
|
| @@ -73,6 +73,21 @@ class ResolvedAstSerializer extends Visitor {
|
|
|
| /// Serializes [resolvedAst] into [objectEncoder].
|
| void serialize() {
|
| + objectEncoder.setEnum(Key.KIND, resolvedAst.kind);
|
| + switch (resolvedAst.kind) {
|
| + case ResolvedAstKind.PARSED:
|
| + serializeParsed();
|
| + break;
|
| + case ResolvedAstKind.DEFAULT_CONSTRUCTOR:
|
| + case ResolvedAstKind.FORWARDING_CONSTRUCTOR:
|
| + // No additional properties.
|
| + break;
|
| + }
|
| + }
|
| +
|
| + /// Serialize [ResolvedAst] that is defined in terms of an AST together with
|
| + /// [TreeElements].
|
| + void serializeParsed() {
|
| objectEncoder.setUri(
|
| Key.URI,
|
| elements.analyzedElement.compilationUnit.script.resourceUri,
|
| @@ -110,7 +125,7 @@ class ResolvedAstSerializer extends Visitor {
|
| }
|
| }
|
| }
|
| - objectEncoder.setEnum(Key.KIND, kind);
|
| + objectEncoder.setEnum(Key.SUB_KIND, kind);
|
| root.accept(indexComputer);
|
| root.accept(this);
|
| }
|
| @@ -216,6 +231,25 @@ class ResolvedAstDeserializer {
|
| /// [element] from its source code.
|
| static ResolvedAst deserialize(Element element, ObjectDecoder objectDecoder,
|
| Parsing parsing, Token getBeginToken(Uri uri, int charOffset)) {
|
| + ResolvedAstKind kind =
|
| + objectDecoder.getEnum(Key.KIND, ResolvedAstKind.values);
|
| + switch (kind) {
|
| + case ResolvedAstKind.PARSED:
|
| + return deserializeParsed(
|
| + element, objectDecoder, parsing, getBeginToken);
|
| + case ResolvedAstKind.DEFAULT_CONSTRUCTOR:
|
| + case ResolvedAstKind.FORWARDING_CONSTRUCTOR:
|
| + return new SynthesizedResolvedAst(element, kind);
|
| + }
|
| + }
|
| +
|
| + /// Deserialize a [ResolvedAst] that is defined in terms of an AST together
|
| + /// with [TreeElements].
|
| + static ResolvedAst deserializeParsed(
|
| + Element element,
|
| + ObjectDecoder objectDecoder,
|
| + Parsing parsing,
|
| + Token getBeginToken(Uri uri, int charOffset)) {
|
| CompilationUnitElement compilationUnit = element.compilationUnit;
|
| DiagnosticReporter reporter = parsing.reporter;
|
|
|
| @@ -366,7 +400,7 @@ class ResolvedAstDeserializer {
|
| }
|
| }
|
|
|
| - AstKind kind = objectDecoder.getEnum(Key.KIND, AstKind.values);
|
| + AstKind kind = objectDecoder.getEnum(Key.SUB_KIND, AstKind.values);
|
| Node root = computeNode(kind);
|
| TreeElementMapping elements = new TreeElementMapping(element);
|
| AstIndexComputer indexComputer = new AstIndexComputer();
|
| @@ -417,6 +451,6 @@ class ResolvedAstDeserializer {
|
| }
|
| }
|
| }
|
| - return new ResolvedAst(element, root, elements);
|
| + return new ParsedResolvedAst(element, root, elements);
|
| }
|
| }
|
|
|