| Index: pkg/kernel/lib/frontend/accessors.dart
|
| diff --git a/pkg/kernel/lib/frontend/accessors.dart b/pkg/kernel/lib/frontend/accessors.dart
|
| index 17355b063d6deeead9524712ea2404aeee592bab..48bb2c5ce84c56a0d049a4ff66d71a7cae63c0ae 100644
|
| --- a/pkg/kernel/lib/frontend/accessors.dart
|
| +++ b/pkg/kernel/lib/frontend/accessors.dart
|
| @@ -42,30 +42,39 @@ abstract class Accessor {
|
| }
|
|
|
| Expression buildCompoundAssignment(Name binaryOperator, Expression value,
|
| - {bool voidContext: false, Procedure interfaceTarget}) {
|
| + {int offset: TreeNode.noOffset,
|
| + bool voidContext: false,
|
| + Procedure interfaceTarget}) {
|
| return _finish(_makeWrite(
|
| - builtBinary =
|
| - makeBinary(_makeRead(), binaryOperator, interfaceTarget, value),
|
| + builtBinary = makeBinary(
|
| + _makeRead(), binaryOperator, interfaceTarget, value,
|
| + offset: offset),
|
| voidContext));
|
| }
|
|
|
| Expression buildPrefixIncrement(Name binaryOperator,
|
| - {bool voidContext: false, Procedure interfaceTarget}) {
|
| + {int offset: TreeNode.noOffset,
|
| + bool voidContext: false,
|
| + Procedure interfaceTarget}) {
|
| return buildCompoundAssignment(binaryOperator, new IntLiteral(1),
|
| - voidContext: voidContext, interfaceTarget: interfaceTarget);
|
| + offset: offset,
|
| + voidContext: voidContext,
|
| + interfaceTarget: interfaceTarget);
|
| }
|
|
|
| Expression buildPostfixIncrement(Name binaryOperator,
|
| - {bool voidContext: false, Procedure interfaceTarget}) {
|
| + {int offset: TreeNode.noOffset,
|
| + bool voidContext: false,
|
| + Procedure interfaceTarget}) {
|
| if (voidContext) {
|
| - return buildPrefixIncrement(binaryOperator,
|
| + return buildPrefixIncrement(binaryOperator, offset: offset,
|
| voidContext: true, interfaceTarget: interfaceTarget);
|
| }
|
| var value = new VariableDeclaration.forValue(_makeRead());
|
| valueAccess() => new VariableGet(value);
|
| var dummy = new VariableDeclaration.forValue(_makeWrite(
|
| - builtBinary = makeBinary(
|
| - valueAccess(), binaryOperator, interfaceTarget, new IntLiteral(1)),
|
| + builtBinary = makeBinary(valueAccess(), binaryOperator, interfaceTarget,
|
| + new IntLiteral(1), offset: offset),
|
| true));
|
| return _finish(makeLet(value, makeLet(dummy, valueAccess())));
|
| }
|
| @@ -400,16 +409,19 @@ Expression makeLet(VariableDeclaration variable, Expression body) {
|
| return new Let(variable, body);
|
| }
|
|
|
| -Expression makeBinary(Expression left, Name operator, Procedure interfaceTarget,
|
| - Expression right) {
|
| +Expression makeBinary(
|
| + Expression left, Name operator, Procedure interfaceTarget, Expression right,
|
| + {int offset: TreeNode.noOffset}) {
|
| return new MethodInvocation(
|
| - left, operator, new Arguments(<Expression>[right]), interfaceTarget);
|
| + left, operator, new Arguments(<Expression>[right]), interfaceTarget)
|
| + ..fileOffset = offset;
|
| }
|
|
|
| final Name _equalOperator = new Name('==');
|
|
|
| -Expression buildIsNull(Expression value) {
|
| - return makeBinary(value, _equalOperator, null, new NullLiteral());
|
| +Expression buildIsNull(Expression value, {int offset: TreeNode.noOffset}) {
|
| + return makeBinary(value, _equalOperator, null, new NullLiteral(),
|
| + offset: offset);
|
| }
|
|
|
| VariableDeclaration makeOrReuseVariable(Expression value) {
|
|
|