From b208d314d61074b3563aed484d7084b524a4825c Mon Sep 17 00:00:00 2001 From: Maxim Medvedev Date: Thu, 1 Oct 2009 20:37:38 +0400 Subject: [PATCH] IDEADEV-37195: Refactoring/Inline for variables inside string literals produces bad code --- .../groovy/refactoring/inline/GroovyInlineVariableUtil.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineVariableUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineVariableUtil.java index 23a2bdfb9c..5b03dd7ac5 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineVariableUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineVariableUtil.java @@ -44,6 +44,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrAssign import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrParenthesizedExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrString; import org.jetbrains.plugins.groovy.lang.psi.api.util.GrVariableDeclarationOwner; import org.jetbrains.plugins.groovy.lang.psi.controlFlow.Instruction; import org.jetbrains.plugins.groovy.lang.psi.dataFlow.DFAEngine; @@ -54,8 +55,8 @@ import org.jetbrains.plugins.groovy.refactoring.GroovyRefactoringUtil; import java.util.ArrayList; import java.util.Collection; -import java.util.Map; import java.util.HashMap; +import java.util.Map; /** * @author ilyas @@ -87,6 +88,7 @@ public class GroovyInlineVariableUtil { public void inlineUsage(final UsageInfo usage, final PsiElement referenced) { GrExpression exprToBeReplaced = (GrExpression) usage.getElement(); + if (exprToBeReplaced == null) return; assert variable.getInitializerGroovy() != null; GrExpression initializerGroovy = variable.getInitializerGroovy(); assert initializerGroovy != null; @@ -96,8 +98,13 @@ public class GroovyInlineVariableUtil { } Project project = variable.getProject(); GroovyPsiElementFactory factory = GroovyPsiElementFactory.getInstance(project); - GrExpression newExpr = factory.createExpressionFromText(tempExpr.getText()); - + GrExpression newExpr; + if (exprToBeReplaced.getParent() instanceof GrString && !(tempExpr instanceof GrReferenceExpression)) { + newExpr = factory.createExpressionFromText("{" + tempExpr.getText() + "}"); + } + else { + newExpr = factory.createExpressionFromText(tempExpr.getText()); + } newExpr = exprToBeReplaced.replaceWithExpression(newExpr, true); FileEditorManager manager = FileEditorManager.getInstance(project); Editor editor = manager.getSelectedTextEditor(); -- 2.11.4.GIT