Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(229)

Unified Diff: pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart

Issue 1881013002: Expand ResolvedAst to handle synthetic constructors. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments + fix test, cps and compilation units for injected members. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
}
}
« no previous file with comments | « pkg/compiler/lib/src/serialization/modelz.dart ('k') | pkg/compiler/lib/src/serialization/serialization.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698