diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.java index b927607f392..0ff77420de3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.java @@ -224,4 +224,20 @@ public class JetPsiFactory { public static JetExpression createFieldIdentifier(Project project, @NotNull String 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; + } } diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/codeTransformations/CodeTransformationUtils.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/codeTransformations/CodeTransformationUtils.java index 08306827f83..d49198f2480 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/codeTransformations/CodeTransformationUtils.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/codeTransformations/CodeTransformationUtils.java @@ -137,10 +137,8 @@ public class CodeTransformationUtils { List outcomes = getIfExpressionOutcomes(ifExpression); 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); ifExpression = (JetIfExpression)assignment.getRight(); @@ -158,9 +156,7 @@ public class CodeTransformationUtils { ifExpression = (JetIfExpression)assignment.replace(ifExpression); for (JetExpression outcome : getIfExpressionOutcomes(ifExpression)) { - JetBinaryExpression localAssignment = (JetBinaryExpression)JetPsiFactory.createExpression(project, "a = b"); - localAssignment = (JetBinaryExpression)localAssignment.getLeft().replace(JetPsiFactory.createExpression(project, varName)).getParent(); - localAssignment = (JetBinaryExpression)localAssignment.getRight().replace(outcome).getParent(); + JetBinaryExpression localAssignment = JetPsiFactory.createAssignment(project, JetPsiFactory.createExpression(project, varName), outcome); outcome.replace(localAssignment); } }