'+=' etc for ArrayAccess
This commit is contained in:
@@ -186,26 +186,24 @@ public class JetControlFlowProcessor {
|
||||
}
|
||||
else if (left instanceof JetArrayAccessExpression) {
|
||||
JetArrayAccessExpression arrayAccessExpression = (JetArrayAccessExpression) left;
|
||||
for (JetExpression index : arrayAccessExpression.getIndexExpressions()) {
|
||||
value(index, false, false);
|
||||
}
|
||||
value(arrayAccessExpression.getArrayExpression(), false, false);
|
||||
value(expression.getOperationReference(), false, false);
|
||||
builder.write(expression, left); // TODO : ???
|
||||
visitAssignToArrayAccess(expression, arrayAccessExpression);
|
||||
} else {
|
||||
builder.unsupported(expression); // TODO
|
||||
}
|
||||
}
|
||||
else if (JetTypeInferrer.assignmentOperationNames.containsKey(operationType)) {
|
||||
JetExpression left = expression.getLeft();
|
||||
value(left, false, false);
|
||||
JetExpression left = JetPsiUtil.deparenthesize(expression.getLeft());
|
||||
if (left != null) {
|
||||
value(left, false, false);
|
||||
}
|
||||
if (right != null) {
|
||||
value(right, false, false);
|
||||
}
|
||||
if (left instanceof JetSimpleNameExpression) {
|
||||
if (left instanceof JetSimpleNameExpression || left instanceof JetArrayAccessExpression) {
|
||||
value(expression.getOperationReference(), false, false);
|
||||
builder.write(expression, left);
|
||||
}
|
||||
else {
|
||||
else if (left != null) {
|
||||
builder.unsupported(expression); // TODO
|
||||
}
|
||||
}
|
||||
@@ -219,6 +217,15 @@ public class JetControlFlowProcessor {
|
||||
}
|
||||
}
|
||||
|
||||
private void visitAssignToArrayAccess(JetBinaryExpression expression, JetArrayAccessExpression arrayAccessExpression) {
|
||||
for (JetExpression index : arrayAccessExpression.getIndexExpressions()) {
|
||||
value(index, false, false);
|
||||
}
|
||||
value(arrayAccessExpression.getArrayExpression(), false, false);
|
||||
value(expression.getOperationReference(), false, false);
|
||||
builder.write(expression, arrayAccessExpression); // TODO : ???
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitUnaryExpression(JetUnaryExpression expression) {
|
||||
JetSimpleNameExpression operationSign = expression.getOperationSign();
|
||||
|
||||
@@ -5,6 +5,8 @@ fun foo() {
|
||||
a[10] = 4
|
||||
2
|
||||
a[10]
|
||||
100
|
||||
a[10] += 1
|
||||
}
|
||||
---------------------
|
||||
l0:
|
||||
@@ -21,6 +23,13 @@ l0:
|
||||
r(10)
|
||||
r(a)
|
||||
r(a[10])
|
||||
r(100)
|
||||
r(10)
|
||||
r(a)
|
||||
r(a[10])
|
||||
r(1)
|
||||
r(+=)
|
||||
w(a[10])
|
||||
l1:
|
||||
<END>
|
||||
error:
|
||||
|
||||
@@ -4,4 +4,6 @@ fun foo() {
|
||||
a[10] = 4
|
||||
2
|
||||
a[10]
|
||||
100
|
||||
a[10] += 1
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ l0:
|
||||
w(x)
|
||||
r(x)
|
||||
r(2)
|
||||
r(+=)
|
||||
w(x)
|
||||
r(true)
|
||||
jf(l2)
|
||||
|
||||
Reference in New Issue
Block a user