diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/JetBundle.properties b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/JetBundle.properties index e9102323696..2e6c3bb457c 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/JetBundle.properties +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/JetBundle.properties @@ -287,8 +287,6 @@ change.function.signature.chooser.title=Choose signature change.function.signature.action=Change function signature remove.unnecessary.parentheses=Remove unnecessary parentheses remove.unnecessary.parentheses.family=Remove Unnecessary Parentheses -remove.unnecessary.curly.brackets.from.string.template=Remove curly braces from variable -remove.unnecessary.curly.brackets.from.string.template.family=Remove Curly Braces From Variable add.name.to.argument.family=Add Name to Argument add.name.to.argument.single=Add name to argument\: ''{0}'' add.name.to.argument.multiple=Add name to argument... diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveCurlyBracesFromTemplateIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveCurlyBracesFromTemplateIntention.kt index 1f8c16a4190..891025168c1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveCurlyBracesFromTemplateIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveCurlyBracesFromTemplateIntention.kt @@ -22,30 +22,26 @@ import org.jetbrains.kotlin.psi.JetSimpleNameExpression import org.jetbrains.kotlin.psi.JetPsiFactory import java.util.regex.* import org.jetbrains.kotlin.psi.JetStringTemplateEntryWithExpression +import org.jetbrains.kotlin.psi.psiUtil.replaced -public class RemoveCurlyBracesFromTemplateIntention : JetSelfTargetingOffsetIndependentIntention( - "remove.unnecessary.curly.brackets.from.string.template", javaClass()) { - - companion object { - val INSTANCE = RemoveCurlyBracesFromTemplateIntention() - val pattern = Pattern.compile("[a-zA-Z0-9_].*") - } - +public class RemoveCurlyBracesFromTemplateIntention : JetSelfTargetingOffsetIndependentIntention(javaClass(), "Remove curly braces from variable") { override fun isApplicableTo(element: JetBlockStringTemplateEntry): Boolean { + if (element.getExpression() !is JetSimpleNameExpression) return false val nextSiblingText = element.getNextSibling()?.getText() - if (nextSiblingText != null && pattern.matcher(nextSiblingText).matches()) return false - return element.getExpression() is JetSimpleNameExpression - } - - fun convertIfApplicable(element: JetBlockStringTemplateEntry): JetStringTemplateEntryWithExpression { - if (!isApplicableTo(element)) return element - - val name = (element.getExpression() as JetSimpleNameExpression).getReferencedName() - val newEntry = JetPsiFactory(element).createSimpleNameStringTemplateEntry(name) - return element.replace(newEntry) as JetStringTemplateEntryWithExpression + return nextSiblingText == null || !pattern.matcher(nextSiblingText).matches() } override fun applyTo(element: JetBlockStringTemplateEntry, editor: Editor) { - convertIfApplicable(element) + applyTo(element) + } + + public fun applyTo(element: JetBlockStringTemplateEntry): JetStringTemplateEntryWithExpression { + val name = (element.getExpression() as JetSimpleNameExpression).getReferencedName() + val newEntry = JetPsiFactory(element).createSimpleNameStringTemplateEntry(name) + return element.replaced(newEntry) + } + + companion object { + private val pattern = Pattern.compile("[a-zA-Z0-9_].*") } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java index 93eb11c263a..336ea132fdb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceVariable/KotlinIntroduceVariableHandler.java @@ -472,8 +472,9 @@ public class KotlinIntroduceVariableHandler extends KotlinIntroduceHandlerBase { PsiElement parent = result != null ? result.getParent() : null; if (parent instanceof JetBlockStringTemplateEntry) { - JetStringTemplateEntryWithExpression newEntry = - RemoveCurlyBracesFromTemplateIntention.INSTANCE.convertIfApplicable((JetBlockStringTemplateEntry) parent); + RemoveCurlyBracesFromTemplateIntention intention = new RemoveCurlyBracesFromTemplateIntention(); + JetBlockStringTemplateEntry entry = (JetBlockStringTemplateEntry) parent; + JetStringTemplateEntryWithExpression newEntry = intention.isApplicableTo(entry) ? intention.applyTo(entry) : entry; result = newEntry.getExpression(); }