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 eb03860b64f1da8900cfd5baf660e12fb6769fba..1d10378a5be5cd09132f862ddcfea036c300d51c 100644 |
--- a/pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart |
+++ b/pkg/compiler/lib/src/serialization/resolved_ast_serialization.dart |
@@ -110,9 +110,6 @@ class ResolvedAstSerializer extends Visitor { |
Key.URI, |
elements.analyzedElement.compilationUnit.script.resourceUri, |
elements.analyzedElement.compilationUnit.script.resourceUri); |
- if (resolvedAst.body != null) { |
- objectEncoder.setInt(Key.BODY, nodeIndices[resolvedAst.body]); |
- } |
AstKind kind; |
if (element.enclosingClass is EnumClassElement) { |
if (element.name == 'index') { |
@@ -148,6 +145,12 @@ class ResolvedAstSerializer extends Visitor { |
} |
objectEncoder.setEnum(Key.SUB_KIND, kind); |
root.accept(indexComputer); |
+ if (resolvedAst.body != null) { |
+ int index = nodeIndices[resolvedAst.body]; |
+ assert(invariant(element, index != null, |
+ message: "No index for body of $element: ${resolvedAst.body} ($nodeIndices).")); |
Siggi Cherem (dart-lang)
2016/04/30 00:08:11
nit: 80
Johnni Winther
2016/04/30 09:23:55
Done.
|
+ objectEncoder.setInt(Key.BODY, index); |
+ } |
root.accept(this); |
if (jumpTargetMap.isNotEmpty) { |
ListEncoder list = objectEncoder.createList(Key.JUMP_TARGETS); |
@@ -489,12 +492,15 @@ class ResolvedAstDeserializer { |
AstIndexComputer indexComputer = new AstIndexComputer(); |
Map<Node, int> nodeIndices = indexComputer.nodeIndices; |
List<Node> nodeList = indexComputer.nodeList; |
+ root.accept(indexComputer); |
Node body; |
int bodyNodeIndex = objectDecoder.getInt(Key.BODY, isOptional: true); |
if (bodyNodeIndex != null) { |
+ assert(invariant(element, bodyNodeIndex < nodeList.length, |
+ message: "Body node index ${bodyNodeIndex} out of range. " |
+ "Node count: ${nodeList.length}")); |
body = nodeList[bodyNodeIndex]; |
} |
- root.accept(indexComputer); |
List<JumpTarget> jumpTargets = <JumpTarget>[]; |
Map<JumpTarget, List<int>> jumpTargetLabels = <JumpTarget, List<int>>{}; |