Index: pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
index 99d52df96e4e934f17d9a0273722e96a9d053a75..88bd05036da46015ef9c73783cd460f9cce9799a 100644 |
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
@@ -20,6 +20,9 @@ import 'package:kernel/class_hierarchy.dart' show ClassHierarchy; |
import 'package:kernel/core_types.dart' show CoreTypes; |
+import 'package:kernel/frontend/accessors.dart' |
+ show buildIsNull, makeBinary, makeLet; |
+ |
import '../parser/dart_vm_native.dart' show skipNativeClause; |
import '../scanner/token.dart' |
@@ -36,8 +39,6 @@ import '../source/outline_builder.dart' show asyncMarkerFromTokens; |
import 'builder_accessors.dart'; |
-import 'frontend_accessors.dart' show buildIsNull, makeBinary, makeLet; |
- |
import '../quote.dart' |
show |
Quote, |
@@ -597,7 +598,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
"Not an operator: '$operator'.", token.charOffset); |
} else { |
Expression result = |
- makeBinary(a, new Name(operator), null, b, token.charOffset); |
+ makeBinary(a, new Name(operator), null, b, offset: token.charOffset); |
if (isSuper) { |
result = toSuperMethodInvocation(result); |
} |
@@ -1557,7 +1558,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
Expression index = popForValue(); |
var receiver = pop(); |
if (receiver is ThisAccessor && receiver.isSuper) { |
- push(new SuperIndexAccessor(this, receiver.charOffset, index, |
+ push(new SuperIndexAccessor(this, receiver.offset, index, |
lookupSuperMember(indexGetName), lookupSuperMember(indexSetName))); |
} else { |
push(IndexAccessor.make(this, openCurlyBracket.charOffset, |
@@ -1578,7 +1579,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
} |
if (receiver is ThisAccessor && receiver.isSuper) { |
push(toSuperMethodInvocation(buildMethodInvocation( |
- new ThisExpression()..fileOffset = receiver.charOffset, |
+ new ThisExpression()..fileOffset = receiver.offset, |
new Name(operator), |
new Arguments.empty(), |
token.charOffset))); |
@@ -1600,8 +1601,8 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
debugEvent("UnaryPrefixAssignmentExpression"); |
var accessor = pop(); |
if (accessor is BuilderAccessor) { |
- push(accessor.buildPrefixIncrement( |
- incrementOperator(token), token.charOffset)); |
+ push(accessor.buildPrefixIncrement(incrementOperator(token), |
+ offset: token.charOffset)); |
} else { |
push(wrapInvalid(toValue(accessor))); |
} |
@@ -2488,11 +2489,27 @@ class CascadeReceiver extends Let { |
abstract class ContextAccessor extends BuilderAccessor { |
final BuilderHelper helper; |
- final int charOffset; |
- |
final BuilderAccessor accessor; |
- ContextAccessor(this.helper, this.charOffset, this.accessor); |
+ final int offset; |
+ |
+ ContextAccessor(this.helper, this.offset, this.accessor); |
+ |
+ @override |
+ Expression get builtBinary => internalError("Unsupported operation."); |
+ |
+ @override |
+ void set builtBinary(Expression expression) { |
+ internalError("Unsupported operation."); |
+ } |
+ |
+ @override |
+ Expression get builtGetter => internalError("Unsupported operation."); |
+ |
+ @override |
+ void set builtGetter(Expression expression) { |
+ internalError("Unsupported operation."); |
+ } |
String get plainNameForRead => internalError("Unsupported operation."); |
@@ -2513,19 +2530,24 @@ abstract class ContextAccessor extends BuilderAccessor { |
return makeInvalidWrite(value); |
} |
- Expression buildCompoundAssignment( |
- Name binaryOperator, Expression value, int charOffset, |
- {bool voidContext: false, Procedure interfaceTarget}) { |
+ Expression buildCompoundAssignment(Name binaryOperator, Expression value, |
+ {int offset: TreeNode.noOffset, |
+ bool voidContext: false, |
+ Procedure interfaceTarget}) { |
return makeInvalidWrite(value); |
} |
- Expression buildPrefixIncrement(Name binaryOperator, int charOffset, |
- {bool voidContext: false, Procedure interfaceTarget}) { |
+ Expression buildPrefixIncrement(Name binaryOperator, |
+ {int offset: TreeNode.noOffset, |
+ bool voidContext: false, |
+ Procedure interfaceTarget}) { |
return makeInvalidWrite(null); |
} |
- Expression buildPostfixIncrement(Name binaryOperator, int charOffset, |
- {bool voidContext: false, Procedure interfaceTarget}) { |
+ Expression buildPostfixIncrement(Name binaryOperator, |
+ {int offset: TreeNode.noOffset, |
+ bool voidContext: false, |
+ Procedure interfaceTarget}) { |
return makeInvalidWrite(null); |
} |
@@ -2533,7 +2555,7 @@ abstract class ContextAccessor extends BuilderAccessor { |
Expression makeInvalidWrite(Expression value) { |
return helper.buildCompileTimeError( |
- "Can't be used as left-hand side of assignment.", charOffset); |
+ "Can't be used as left-hand side of assignment.", offset); |
} |
} |
@@ -2558,41 +2580,41 @@ class DelayedAssignment extends ContextAccessor { |
if (identical("=", assignmentOperator)) { |
return accessor.buildAssignment(value, voidContext: voidContext); |
} else if (identical("+=", assignmentOperator)) { |
- return accessor.buildCompoundAssignment(plusName, value, charOffset, |
- voidContext: voidContext); |
+ return accessor.buildCompoundAssignment(plusName, value, |
+ offset: offset, voidContext: voidContext); |
} else if (identical("-=", assignmentOperator)) { |
- return accessor.buildCompoundAssignment(minusName, value, charOffset, |
- voidContext: voidContext); |
+ return accessor.buildCompoundAssignment(minusName, value, |
+ offset: offset, voidContext: voidContext); |
} else if (identical("*=", assignmentOperator)) { |
- return accessor.buildCompoundAssignment(multiplyName, value, charOffset, |
- voidContext: voidContext); |
+ return accessor.buildCompoundAssignment(multiplyName, value, |
+ offset: offset, voidContext: voidContext); |
} else if (identical("%=", assignmentOperator)) { |
- return accessor.buildCompoundAssignment(percentName, value, charOffset, |
- voidContext: voidContext); |
+ return accessor.buildCompoundAssignment(percentName, value, |
+ offset: offset, voidContext: voidContext); |
} else if (identical("&=", assignmentOperator)) { |
- return accessor.buildCompoundAssignment(ampersandName, value, charOffset, |
- voidContext: voidContext); |
+ return accessor.buildCompoundAssignment(ampersandName, value, |
+ offset: offset, voidContext: voidContext); |
} else if (identical("/=", assignmentOperator)) { |
- return accessor.buildCompoundAssignment(divisionName, value, charOffset, |
- voidContext: voidContext); |
+ return accessor.buildCompoundAssignment(divisionName, value, |
+ offset: offset, voidContext: voidContext); |
} else if (identical("<<=", assignmentOperator)) { |
- return accessor.buildCompoundAssignment(leftShiftName, value, charOffset, |
- voidContext: voidContext); |
+ return accessor.buildCompoundAssignment(leftShiftName, value, |
+ offset: offset, voidContext: voidContext); |
} else if (identical(">>=", assignmentOperator)) { |
- return accessor.buildCompoundAssignment(rightShiftName, value, charOffset, |
- voidContext: voidContext); |
+ return accessor.buildCompoundAssignment(rightShiftName, value, |
+ offset: offset, voidContext: voidContext); |
} else if (identical("??=", assignmentOperator)) { |
return accessor.buildNullAwareAssignment(value, const DynamicType(), |
voidContext: voidContext); |
} else if (identical("^=", assignmentOperator)) { |
- return accessor.buildCompoundAssignment(caretName, value, charOffset, |
- voidContext: voidContext); |
+ return accessor.buildCompoundAssignment(caretName, value, |
+ offset: offset, voidContext: voidContext); |
} else if (identical("|=", assignmentOperator)) { |
- return accessor.buildCompoundAssignment(barName, value, charOffset, |
- voidContext: voidContext); |
+ return accessor.buildCompoundAssignment(barName, value, |
+ offset: offset, voidContext: voidContext); |
} else if (identical("~/=", assignmentOperator)) { |
- return accessor.buildCompoundAssignment(mustacheName, value, charOffset, |
- voidContext: voidContext); |
+ return accessor.buildCompoundAssignment(mustacheName, value, |
+ offset: offset, voidContext: voidContext); |
} else { |
return internalError("Unhandled: $assignmentOperator"); |
} |
@@ -2620,18 +2642,18 @@ class DelayedPostfixIncrement extends ContextAccessor { |
final Procedure interfaceTarget; |
- DelayedPostfixIncrement(BuilderHelper helper, int charOffset, |
+ DelayedPostfixIncrement(BuilderHelper helper, int offset, |
BuilderAccessor accessor, this.binaryOperator, this.interfaceTarget) |
- : super(helper, charOffset, accessor); |
+ : super(helper, offset, accessor); |
Expression buildSimpleRead() { |
- return accessor.buildPostfixIncrement(binaryOperator, charOffset, |
- voidContext: false, interfaceTarget: interfaceTarget); |
+ return accessor.buildPostfixIncrement(binaryOperator, |
+ offset: offset, voidContext: false, interfaceTarget: interfaceTarget); |
} |
Expression buildForEffect() { |
- return accessor.buildPostfixIncrement(binaryOperator, charOffset, |
- voidContext: true, interfaceTarget: interfaceTarget); |
+ return accessor.buildPostfixIncrement(binaryOperator, |
+ offset: offset, voidContext: true, interfaceTarget: interfaceTarget); |
} |
} |