| Index: pkg/kernel/lib/binary/ast_to_binary.dart
|
| diff --git a/pkg/kernel/lib/binary/ast_to_binary.dart b/pkg/kernel/lib/binary/ast_to_binary.dart
|
| index 7ba49eef30d54176e7fe9902cf06e410ecc141fa..95f9cca5d795a9c987c18b72129b9f2c5682398b 100644
|
| --- a/pkg/kernel/lib/binary/ast_to_binary.dart
|
| +++ b/pkg/kernel/lib/binary/ast_to_binary.dart
|
| @@ -221,7 +221,7 @@ class BinaryPrinter extends Visitor {
|
| writeCanonicalNameReference(node.canonicalName);
|
| }
|
|
|
| - writeOffset(TreeNode node, int offset) {
|
| + writeOffset(int offset) {
|
| // TODO(jensj): Delta-encoding.
|
| // File offset ranges from -1 and up,
|
| // but is here saved as unsigned (thus the +1)
|
| @@ -305,7 +305,7 @@ class BinaryPrinter extends Visitor {
|
| }
|
| writeByte(Tag.Class);
|
| writeCanonicalNameReference(getCanonicalNameOfClass(node));
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeByte(flags);
|
| writeStringReference(node.name ?? '');
|
| writeUriReference(node.fileUri ?? '');
|
| @@ -330,8 +330,8 @@ class BinaryPrinter extends Visitor {
|
| _variableIndexer = new VariableIndexer();
|
| writeByte(Tag.Constructor);
|
| writeCanonicalNameReference(getCanonicalNameOfMember(node));
|
| - writeOffset(node, node.fileOffset);
|
| - writeOffset(node, node.fileEndOffset);
|
| + writeOffset(node.fileOffset);
|
| + writeOffset(node.fileEndOffset);
|
| writeByte(node.flags);
|
| writeName(node.name ?? _emptyName);
|
| writeAnnotationList(node.annotations);
|
| @@ -351,8 +351,8 @@ class BinaryPrinter extends Visitor {
|
| _variableIndexer = new VariableIndexer();
|
| writeByte(Tag.Procedure);
|
| writeCanonicalNameReference(getCanonicalNameOfMember(node));
|
| - writeOffset(node, node.fileOffset);
|
| - writeOffset(node, node.fileEndOffset);
|
| + writeOffset(node.fileOffset);
|
| + writeOffset(node.fileEndOffset);
|
| writeByte(node.kind.index);
|
| writeByte(node.flags);
|
| writeName(node.name ?? '');
|
| @@ -369,8 +369,8 @@ class BinaryPrinter extends Visitor {
|
| _variableIndexer = new VariableIndexer();
|
| writeByte(Tag.Field);
|
| writeCanonicalNameReference(getCanonicalNameOfMember(node));
|
| - writeOffset(node, node.fileOffset);
|
| - writeOffset(node, node.fileEndOffset);
|
| + writeOffset(node.fileOffset);
|
| + writeOffset(node.fileEndOffset);
|
| writeByte(node.flags);
|
| writeName(node.name);
|
| writeUriReference(node.fileUri ?? '');
|
| @@ -417,8 +417,8 @@ class BinaryPrinter extends Visitor {
|
| _switchCaseIndexer = new SwitchCaseIndexer();
|
| // Note: FunctionNode has no tag.
|
| _typeParameterIndexer.enter(node.typeParameters);
|
| - writeOffset(node, node.fileOffset);
|
| - writeOffset(node, node.fileEndOffset);
|
| + writeOffset(node.fileOffset);
|
| + writeOffset(node.fileEndOffset);
|
| writeByte(node.asyncMarker.index);
|
| writeByte(node.dartAsyncMarker.index);
|
| writeNodeList(node.typeParameters);
|
| @@ -445,10 +445,10 @@ class BinaryPrinter extends Visitor {
|
| if (index & Tag.SpecializedPayloadMask == index &&
|
| node.promotedType == null) {
|
| writeByte(Tag.SpecializedVariableGet + index);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| } else {
|
| writeByte(Tag.VariableGet);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeUInt30(_variableIndexer[node.variable]);
|
| writeOptionalNode(node.promotedType);
|
| }
|
| @@ -459,11 +459,11 @@ class BinaryPrinter extends Visitor {
|
| int index = _variableIndexer[node.variable];
|
| if (index & Tag.SpecializedPayloadMask == index) {
|
| writeByte(Tag.SpecializedVariableSet + index);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeNode(node.value);
|
| } else {
|
| writeByte(Tag.VariableSet);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeUInt30(_variableIndexer[node.variable]);
|
| writeNode(node.value);
|
| }
|
| @@ -471,7 +471,7 @@ class BinaryPrinter extends Visitor {
|
|
|
| visitPropertyGet(PropertyGet node) {
|
| writeByte(Tag.PropertyGet);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeNode(node.receiver);
|
| writeName(node.name);
|
| writeReference(node.interfaceTargetReference);
|
| @@ -479,7 +479,7 @@ class BinaryPrinter extends Visitor {
|
|
|
| visitPropertySet(PropertySet node) {
|
| writeByte(Tag.PropertySet);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeNode(node.receiver);
|
| writeName(node.name);
|
| writeNode(node.value);
|
| @@ -514,20 +514,20 @@ class BinaryPrinter extends Visitor {
|
|
|
| visitStaticGet(StaticGet node) {
|
| writeByte(Tag.StaticGet);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeReference(node.targetReference);
|
| }
|
|
|
| visitStaticSet(StaticSet node) {
|
| writeByte(Tag.StaticSet);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeReference(node.targetReference);
|
| writeNode(node.value);
|
| }
|
|
|
| visitMethodInvocation(MethodInvocation node) {
|
| writeByte(Tag.MethodInvocation);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeNode(node.receiver);
|
| writeName(node.name);
|
| writeNode(node.arguments);
|
| @@ -536,7 +536,7 @@ class BinaryPrinter extends Visitor {
|
|
|
| visitSuperMethodInvocation(SuperMethodInvocation node) {
|
| writeByte(Tag.SuperMethodInvocation);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeName(node.name);
|
| writeNode(node.arguments);
|
| writeReference(node.interfaceTargetReference);
|
| @@ -551,7 +551,7 @@ class BinaryPrinter extends Visitor {
|
|
|
| visitStaticInvocation(StaticInvocation node) {
|
| writeByte(node.isConst ? Tag.ConstStaticInvocation : Tag.StaticInvocation);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeReference(node.targetReference);
|
| writeNode(node.arguments);
|
| }
|
| @@ -560,7 +560,7 @@ class BinaryPrinter extends Visitor {
|
| writeByte(node.isConst
|
| ? Tag.ConstConstructorInvocation
|
| : Tag.ConstructorInvocation);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeReference(node.targetReference);
|
| writeNode(node.arguments);
|
| }
|
| @@ -608,20 +608,20 @@ class BinaryPrinter extends Visitor {
|
|
|
| visitStringConcatenation(StringConcatenation node) {
|
| writeByte(Tag.StringConcatenation);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeNodeList(node.expressions);
|
| }
|
|
|
| visitIsExpression(IsExpression node) {
|
| writeByte(Tag.IsExpression);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeNode(node.operand);
|
| writeNode(node.type);
|
| }
|
|
|
| visitAsExpression(AsExpression node) {
|
| writeByte(Tag.AsExpression);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeNode(node.operand);
|
| writeNode(node.type);
|
| }
|
| @@ -682,25 +682,25 @@ class BinaryPrinter extends Visitor {
|
|
|
| visitRethrow(Rethrow node) {
|
| writeByte(Tag.Rethrow);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| }
|
|
|
| visitThrow(Throw node) {
|
| writeByte(Tag.Throw);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeNode(node.expression);
|
| }
|
|
|
| visitListLiteral(ListLiteral node) {
|
| writeByte(node.isConst ? Tag.ConstListLiteral : Tag.ListLiteral);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeNode(node.typeArgument);
|
| writeNodeList(node.expressions);
|
| }
|
|
|
| visitMapLiteral(MapLiteral node) {
|
| writeByte(node.isConst ? Tag.ConstMapLiteral : Tag.MapLiteral);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeNode(node.keyType);
|
| writeNode(node.valueType);
|
| writeNodeList(node.entries);
|
| @@ -782,7 +782,7 @@ class BinaryPrinter extends Visitor {
|
|
|
| visitBreakStatement(BreakStatement node) {
|
| writeByte(Tag.BreakStatement);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeUInt30(_labelIndexer[node.target]);
|
| }
|
|
|
| @@ -811,7 +811,7 @@ class BinaryPrinter extends Visitor {
|
| visitForInStatement(ForInStatement node) {
|
| _variableIndexer.pushScope();
|
| writeByte(node.isAsync ? Tag.AsyncForInStatement : Tag.ForInStatement);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeVariableDeclaration(node.variable);
|
| writeNode(node.iterable);
|
| writeNode(node.body);
|
| @@ -829,6 +829,7 @@ class BinaryPrinter extends Visitor {
|
| visitSwitchCase(SwitchCase node) {
|
| // Note: there is no tag on SwitchCase.
|
| writeNodeList(node.expressions);
|
| + node.expressionOffsets.forEach(writeOffset);
|
| writeByte(node.isDefault ? 1 : 0);
|
| writeNode(node.body);
|
| }
|
| @@ -847,7 +848,7 @@ class BinaryPrinter extends Visitor {
|
|
|
| visitReturnStatement(ReturnStatement node) {
|
| writeByte(Tag.ReturnStatement);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeOptionalNode(node.expression);
|
| }
|
|
|
| @@ -875,7 +876,7 @@ class BinaryPrinter extends Visitor {
|
|
|
| visitYieldStatement(YieldStatement node) {
|
| writeByte(Tag.YieldStatement);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeByte(node.flags);
|
| writeNode(node.expression);
|
| }
|
| @@ -886,8 +887,8 @@ class BinaryPrinter extends Visitor {
|
| }
|
|
|
| void writeVariableDeclaration(VariableDeclaration node) {
|
| - writeOffset(node, node.fileOffset);
|
| - writeOffset(node, node.fileEqualsOffset);
|
| + writeOffset(node.fileOffset);
|
| + writeOffset(node.fileEqualsOffset);
|
| writeByte(node.flags);
|
| writeStringReference(node.name ?? '');
|
| writeNode(node.type);
|
| @@ -913,7 +914,7 @@ class BinaryPrinter extends Visitor {
|
|
|
| visitFunctionDeclaration(FunctionDeclaration node) {
|
| writeByte(Tag.FunctionDeclaration);
|
| - writeOffset(node, node.fileOffset);
|
| + writeOffset(node.fileOffset);
|
| writeVariableDeclaration(node.variable);
|
| writeNode(node.function);
|
| }
|
|
|