Add assignment creation to JetPsiFactory

This commit is contained in:
Alexey Sedunov
2013-04-08 15:16:21 +04:00
parent 0b52696fe1
commit 691a62fa2b
2 changed files with 18 additions and 6 deletions
@@ -224,4 +224,20 @@ public class JetPsiFactory {
public static JetExpression createFieldIdentifier(Project project, @NotNull String fieldName) { public static JetExpression createFieldIdentifier(Project project, @NotNull String fieldName) {
return createExpression(project, "$" + fieldName); return createExpression(project, "$" + fieldName);
} }
public static JetBinaryExpression createAssignment(Project project, @NotNull String lhs, @NotNull String rhs) {
return (JetBinaryExpression) createExpression(project, lhs + " = " + rhs);
}
@SuppressWarnings("ConstantConditions")
public static JetBinaryExpression createAssignment(Project project, @NotNull JetExpression lhs, @NotNull JetExpression rhs) {
JetBinaryExpression assignment = createAssignment(project, "_", "_");
assert assignment.getRight() != null;
assignment = (JetBinaryExpression)assignment.getLeft().replace(lhs).getParent();
assignment = (JetBinaryExpression)assignment.getRight().replace(rhs).getParent();
return assignment;
}
} }
@@ -137,10 +137,8 @@ public class CodeTransformationUtils {
List<JetExpression> outcomes = getIfExpressionOutcomes(ifExpression); List<JetExpression> outcomes = getIfExpressionOutcomes(ifExpression);
JetExpression lhs = ((JetBinaryExpression)outcomes.get(0)).getLeft(); JetExpression lhs = ((JetBinaryExpression)outcomes.get(0)).getLeft();
JetBinaryExpression assignment = (JetBinaryExpression)JetPsiFactory.createExpression(project, "a = b"); JetBinaryExpression assignment = JetPsiFactory.createAssignment(project, lhs, ifExpression);
assignment = (JetBinaryExpression)assignment.getLeft().replace(lhs).getParent();
assignment = (JetBinaryExpression)assignment.getRight().replace(ifExpression).getParent();
assignment = (JetBinaryExpression)ifExpression.replace(assignment); assignment = (JetBinaryExpression)ifExpression.replace(assignment);
ifExpression = (JetIfExpression)assignment.getRight(); ifExpression = (JetIfExpression)assignment.getRight();
@@ -158,9 +156,7 @@ public class CodeTransformationUtils {
ifExpression = (JetIfExpression)assignment.replace(ifExpression); ifExpression = (JetIfExpression)assignment.replace(ifExpression);
for (JetExpression outcome : getIfExpressionOutcomes(ifExpression)) { for (JetExpression outcome : getIfExpressionOutcomes(ifExpression)) {
JetBinaryExpression localAssignment = (JetBinaryExpression)JetPsiFactory.createExpression(project, "a = b"); JetBinaryExpression localAssignment = JetPsiFactory.createAssignment(project, JetPsiFactory.createExpression(project, varName), outcome);
localAssignment = (JetBinaryExpression)localAssignment.getLeft().replace(JetPsiFactory.createExpression(project, varName)).getParent();
localAssignment = (JetBinaryExpression)localAssignment.getRight().replace(outcome).getParent();
outcome.replace(localAssignment); outcome.replace(localAssignment);
} }
} }