From e4de51468ff4aacf73d8e29b63b012188fe1a227 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 10 Apr 2013 15:48:48 +0400 Subject: [PATCH] Add construction of "return" and "if" expressions to JetPsiFactory --- .../jetbrains/jet/lang/psi/JetPsiFactory.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) 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 6ce487786b3..2fa61b6daff 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiFactory.java @@ -272,4 +272,40 @@ public class JetPsiFactory { public static JetExpressionCodeFragment createExpressionCodeFragment(Project project, String text, PsiElement context) { return new JetExpressionCodeFragmentImpl(project, "fragment.kt", text, context); } + + public static JetReturnExpression createReturn(Project project, @NotNull String text) { + return (JetReturnExpression) createExpression(project, "return " + text); + } + + @SuppressWarnings("ConstantConditions") + public static JetReturnExpression createReturn(Project project, @NotNull JetExpression expression) { + JetReturnExpression returnExpr = createReturn(project, "_"); + + assert returnExpr.getReturnedExpression() != null; + + return (JetReturnExpression)returnExpr.getReturnedExpression().replace(expression).getParent(); + } + + public static JetIfExpression createIf(Project project, @NotNull String condText, @NotNull String thenText, @Nullable String elseText) { + return (JetIfExpression) createExpression(project, "if (" + condText + ") " + thenText + (elseText != null ? " else " + elseText : "")); + } + + @SuppressWarnings("ConstantConditions") + public static JetIfExpression createIf(Project project, @NotNull JetExpression condition, @NotNull JetExpression thenExpr, @Nullable JetExpression elseExpr) { + JetIfExpression ifExpr = createIf(project, "_", "_", elseExpr != null ? "_" : null); + + assert ifExpr.getCondition() != null; + assert ifExpr.getThen() != null; + if (elseExpr != null) { + assert ifExpr.getElse() != null; + } + + ifExpr = (JetIfExpression)ifExpr.getCondition().replace(condition).getParent().getParent(); + ifExpr = (JetIfExpression)ifExpr.getThen().replace(thenExpr).getParent().getParent(); + if (elseExpr != null) { + ifExpr = (JetIfExpression)ifExpr.getElse().replace(elseExpr).getParent().getParent(); + } + + return ifExpr; + } }