diff --git a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt index 53200155dbd..d76c48d2d3f 100644 --- a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt @@ -350,6 +350,8 @@ fun main(args: Array) { model("intentions/removeUnnecessaryParentheses", testMethod = "doTestRemoveUnnecessaryParentheses") model("intentions/replaceWithDotQualifiedMethodCall", testMethod = "doTestReplaceWithDotQualifiedMethodCall") model("intentions/replaceWithInfixFunctionCall", testMethod = "doTestReplaceWithInfixFunctionCall") + model("intentions/removeCurlyBracesFromTemplate", testMethod = "doTestRemoveCurlyFromTemplate") + model("intentions/insertCurlyBracestsToTemplate", testMethod = "doTestInsertCurlyToTemplate") } testClass(javaClass()) { diff --git a/idea/resources/intentionDescriptions/InsertCurlyBracesToTemplateIntention/after.kt.template b/idea/resources/intentionDescriptions/InsertCurlyBracesToTemplateIntention/after.kt.template new file mode 100644 index 00000000000..0eb64254baa --- /dev/null +++ b/idea/resources/intentionDescriptions/InsertCurlyBracesToTemplateIntention/after.kt.template @@ -0,0 +1,3 @@ +fun foo() { + val y = "${x}" +} \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/InsertCurlyBracesToTemplateIntention/before.kt.template b/idea/resources/intentionDescriptions/InsertCurlyBracesToTemplateIntention/before.kt.template new file mode 100644 index 00000000000..153d875dbc2 --- /dev/null +++ b/idea/resources/intentionDescriptions/InsertCurlyBracesToTemplateIntention/before.kt.template @@ -0,0 +1,3 @@ +fun foo() { + val y = "$x" +} \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/InsertCurlyBracesToTemplateIntention/description.html b/idea/resources/intentionDescriptions/InsertCurlyBracesToTemplateIntention/description.html new file mode 100644 index 00000000000..b66f15dfc5e --- /dev/null +++ b/idea/resources/intentionDescriptions/InsertCurlyBracesToTemplateIntention/description.html @@ -0,0 +1,5 @@ + + +This intention inserts curly braces around simple names in string templates + + \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/RemoveCurlyBracesFromTemplateIntention/after.kt.template b/idea/resources/intentionDescriptions/RemoveCurlyBracesFromTemplateIntention/after.kt.template new file mode 100644 index 00000000000..153d875dbc2 --- /dev/null +++ b/idea/resources/intentionDescriptions/RemoveCurlyBracesFromTemplateIntention/after.kt.template @@ -0,0 +1,3 @@ +fun foo() { + val y = "$x" +} \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/RemoveCurlyBracesFromTemplateIntention/before.kt.template b/idea/resources/intentionDescriptions/RemoveCurlyBracesFromTemplateIntention/before.kt.template new file mode 100644 index 00000000000..0eb64254baa --- /dev/null +++ b/idea/resources/intentionDescriptions/RemoveCurlyBracesFromTemplateIntention/before.kt.template @@ -0,0 +1,3 @@ +fun foo() { + val y = "${x}" +} \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/RemoveCurlyBracesFromTemplateIntention/description.html b/idea/resources/intentionDescriptions/RemoveCurlyBracesFromTemplateIntention/description.html new file mode 100644 index 00000000000..265b74ae154 --- /dev/null +++ b/idea/resources/intentionDescriptions/RemoveCurlyBracesFromTemplateIntention/description.html @@ -0,0 +1,5 @@ + + +This intention removes the unnecessary curly braces around simple names in string templates + + \ No newline at end of file diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index 011633d1b5d..6fd05c835e5 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -475,6 +475,16 @@ Kotlin + + org.jetbrains.jet.plugin.intentions.RemoveCurlyBracesFromTemplateIntention + Kotlin + + + + org.jetbrains.jet.plugin.intentions.InsertCurlyBracesToTemplateIntention + Kotlin + + org.jetbrains.jet.plugin.intentions.declarations.SplitPropertyDeclarationIntention Kotlin diff --git a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties index e74bdad69af..8c8e63f2664 100644 --- a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties +++ b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties @@ -217,6 +217,10 @@ 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 +insert.curly.brackets.to.string.template=Insert curly braces around variable +insert.curly.brackets.to.string.template.family=Insert curly braces around 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/jet/plugin/intentions/InsertCurlyBracesToTemplateIntention.kt b/idea/src/org/jetbrains/jet/plugin/intentions/InsertCurlyBracesToTemplateIntention.kt new file mode 100644 index 00000000000..a710a8e87d9 --- /dev/null +++ b/idea/src/org/jetbrains/jet/plugin/intentions/InsertCurlyBracesToTemplateIntention.kt @@ -0,0 +1,33 @@ +/* + * Copyright 2010-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.plugin.intentions + +import com.intellij.openapi.editor.Editor +import org.jetbrains.jet.lang.psi.JetSimpleNameStringTemplateEntry +import org.jetbrains.jet.lang.psi.JetPsiFactory + +public class InsertCurlyBracesToTemplateIntention : JetSelfTargetingIntention( + "insert.curly.brackets.to.string.template", javaClass()) { + + override fun isApplicableTo(element: JetSimpleNameStringTemplateEntry): Boolean = true + + override fun applyTo(element: JetSimpleNameStringTemplateEntry, editor: Editor) { + val expression = element.getExpression() + if (expression == null) return + element.replace(JetPsiFactory.createBlockStringTemplateEntry(element.getProject(), expression)) + } +} diff --git a/idea/src/org/jetbrains/jet/plugin/intentions/RemoveCurlyBracesFromTemplateIntention.kt b/idea/src/org/jetbrains/jet/plugin/intentions/RemoveCurlyBracesFromTemplateIntention.kt new file mode 100644 index 00000000000..6b2ac8f2c6b --- /dev/null +++ b/idea/src/org/jetbrains/jet/plugin/intentions/RemoveCurlyBracesFromTemplateIntention.kt @@ -0,0 +1,51 @@ +/* + * Copyright 2010-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.plugin.intentions + +import com.intellij.openapi.editor.Editor +import org.jetbrains.jet.lang.psi.JetBlockStringTemplateEntry +import org.jetbrains.jet.lang.psi.JetSimpleNameExpression +import org.jetbrains.jet.lang.psi.JetPsiFactory +import java.util.regex.* + +public class RemoveCurlyBracesFromTemplateIntention : JetSelfTargetingIntention( + "remove.unnecessary.curly.brackets.from.string.template", javaClass()) { + + class object { + val pattern = Pattern.compile("[a-zA-Z0-9_].*") + } + + override fun isApplicableTo(element: JetBlockStringTemplateEntry): Boolean { + val nextSiblingText = element.getNextSibling()?.getText() + if (nextSiblingText != null && pattern.matcher(nextSiblingText).matches()) return false + return element.getExpression()?.getOriginalElement() is JetSimpleNameExpression + } + + override fun applyTo(element: JetBlockStringTemplateEntry, editor: Editor) { + val parent = element.getParent() + if (parent == null) return + val sb = StringBuilder() + for (ch in parent.getChildren()) { + val newText = if (ch == element) "\$${element.getExpression()?.getText()}" else "${ch.getText()}" + sb.append(newText) + } + val tripleQuotes = parent.getFirstChild()?.getText()?.startsWith("\"\"\"") + if (tripleQuotes == null) return + val newExpression = if (tripleQuotes) "\"\"\"${sb.toString()}\"\"\"" else "\"${sb.toString()}\"" + parent.replace(JetPsiFactory.createExpression(element.getProject(), newExpression)) + } +} diff --git a/idea/testData/intentions/insertCurlyBracesToTemplate/dontInsertBrackets1.kt b/idea/testData/intentions/insertCurlyBracesToTemplate/dontInsertBrackets1.kt new file mode 100644 index 00000000000..44b5c70d856 --- /dev/null +++ b/idea/testData/intentions/insertCurlyBracesToTemplate/dontInsertBrackets1.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: false +fun foo() { + val x = 4 + val y = "hello" +} \ No newline at end of file diff --git a/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets1.kt b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets1.kt new file mode 100644 index 00000000000..4578d6bea36 --- /dev/null +++ b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets1.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "$x" +} \ No newline at end of file diff --git a/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets1.kt.after b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets1.kt.after new file mode 100644 index 00000000000..f0c125c138c --- /dev/null +++ b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets1.kt.after @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "${x}" +} \ No newline at end of file diff --git a/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets2.kt b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets2.kt new file mode 100644 index 00000000000..1e50116ecf5 --- /dev/null +++ b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets2.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "something$x.somethingelse" +} \ No newline at end of file diff --git a/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets2.kt.after b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets2.kt.after new file mode 100644 index 00000000000..70b43e6560f --- /dev/null +++ b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets2.kt.after @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "something${x}.somethingelse" +} \ No newline at end of file diff --git a/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets3.kt b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets3.kt new file mode 100644 index 00000000000..b3751d0411f --- /dev/null +++ b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets3.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "$x\n" +} \ No newline at end of file diff --git a/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets3.kt.after b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets3.kt.after new file mode 100644 index 00000000000..4879d08444b --- /dev/null +++ b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets3.kt.after @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "${x}\n" +} \ No newline at end of file diff --git a/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets4.kt b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets4.kt new file mode 100644 index 00000000000..8905dc0c7b4 --- /dev/null +++ b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets4.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "$x$x$x" +} \ No newline at end of file diff --git a/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets4.kt.after b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets4.kt.after new file mode 100644 index 00000000000..2c50a0fa43a --- /dev/null +++ b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets4.kt.after @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "$x${x}$x" +} \ No newline at end of file diff --git a/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets5.kt b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets5.kt new file mode 100644 index 00000000000..55a4ca11e27 --- /dev/null +++ b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets5.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = """$x$x$x""" +} \ No newline at end of file diff --git a/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets5.kt.after b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets5.kt.after new file mode 100644 index 00000000000..28e07b6be19 --- /dev/null +++ b/idea/testData/intentions/insertCurlyBracesToTemplate/insertBrackets5.kt.after @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = """$x${x}$x""" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets1.kt b/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets1.kt new file mode 100644 index 00000000000..ba0e7fbdcc9 --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets1.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: false +fun foo() { + val x = "x" + val y = "${x.length}" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets2.kt b/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets2.kt new file mode 100644 index 00000000000..ccc52f8f145 --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets2.kt @@ -0,0 +1,9 @@ +// IS_APPLICABLE: false +fun foo() { + val x = X() + val y = "${x.bar()}" +} + +public class X() { + fun bar() : String = "bar" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets3.kt b/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets3.kt new file mode 100644 index 00000000000..a5a34a8780a --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets3.kt @@ -0,0 +1,6 @@ +// IS_APPLICABLE: false +fun foo() { + val x = 3 + val z = 4 + val y = "${x + z}" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets4.kt b/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets4.kt new file mode 100644 index 00000000000..53b3b3a0f25 --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets4.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: false +fun foo() { + val x = 3 + val y = "${x}y" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets5.kt b/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets5.kt new file mode 100644 index 00000000000..de584c430a4 --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets5.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: false +fun foo() { + val x = 3 + val y = "${x}_y" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets1.kt b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets1.kt new file mode 100644 index 00000000000..84f54b4364a --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets1.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "${x}" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets1.kt.after b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets1.kt.after new file mode 100644 index 00000000000..d6e0e379ba1 --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets1.kt.after @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "$x" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets2.kt b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets2.kt new file mode 100644 index 00000000000..2b78e48accc --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets2.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "${x}.moretext" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets2.kt.after b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets2.kt.after new file mode 100644 index 00000000000..5547900cae0 --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets2.kt.after @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "$x.moretext" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets3.kt b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets3.kt new file mode 100644 index 00000000000..51b8a3f27ae --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets3.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "${x}\n" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets3.kt.after b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets3.kt.after new file mode 100644 index 00000000000..3b42f03b97c --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets3.kt.after @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "$x\n" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets4.kt b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets4.kt new file mode 100644 index 00000000000..5e8bc0b6a6d --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets4.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "${x}() this is okay, x will not be thought of as a function call" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets4.kt.after b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets4.kt.after new file mode 100644 index 00000000000..4010a13a6af --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets4.kt.after @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "$x() this is okay, x will not be thought of as a function call" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets5.kt b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets5.kt new file mode 100644 index 00000000000..1e52205de80 --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets5.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "text${x} moretext" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets5.kt.after b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets5.kt.after new file mode 100644 index 00000000000..a92d97efb88 --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets5.kt.after @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = "text$x moretext" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets6.kt b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets6.kt new file mode 100644 index 00000000000..7958bebc8ac --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets6.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = """text${x} moretext""" +} \ No newline at end of file diff --git a/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets6.kt.after b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets6.kt.after new file mode 100644 index 00000000000..339265a80dc --- /dev/null +++ b/idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets6.kt.after @@ -0,0 +1,5 @@ +// IS_APPLICABLE: true +fun foo() { + val x = 4 + val y = """text$x moretext""" +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/intentions/AbstractCodeTransformationTest.java b/idea/tests/org/jetbrains/jet/plugin/intentions/AbstractCodeTransformationTest.java index a500035e7f0..9de65d46c30 100644 --- a/idea/tests/org/jetbrains/jet/plugin/intentions/AbstractCodeTransformationTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/intentions/AbstractCodeTransformationTest.java @@ -110,6 +110,14 @@ public abstract class AbstractCodeTransformationTest extends LightCodeInsightTes doTestIntention(path, new RemoveUnnecessaryParenthesesIntention()); } + public void doTestRemoveCurlyFromTemplate(@NotNull String path) throws Exception { + doTestIntention(path, new RemoveCurlyBracesFromTemplateIntention()); + } + + public void doTestInsertCurlyToTemplate(@NotNull String path) throws Exception { + doTestIntention(path, new InsertCurlyBracesToTemplateIntention()); + } + public void doTestConvertMemberToExtension(@NotNull String path) throws Exception { doTestIntention(path, new ConvertMemberToExtension()); } diff --git a/idea/tests/org/jetbrains/jet/plugin/intentions/CodeTransformationTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/intentions/CodeTransformationTestGenerated.java index 24f01b498a5..dcddf068127 100644 --- a/idea/tests/org/jetbrains/jet/plugin/intentions/CodeTransformationTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/intentions/CodeTransformationTestGenerated.java @@ -16,21 +16,18 @@ package org.jetbrains.jet.plugin.intentions; -import junit.framework.Assert; import junit.framework.Test; import junit.framework.TestSuite; - -import java.io.File; -import java.util.regex.Pattern; import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.test.InnerTestClasses; import org.jetbrains.jet.test.TestMetadata; -import org.jetbrains.jet.plugin.intentions.AbstractCodeTransformationTest; +import java.io.File; +import java.util.regex.Pattern; /** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ @SuppressWarnings("all") -@InnerTestClasses({CodeTransformationTestGenerated.IfToAssignment.class, CodeTransformationTestGenerated.IfToReturn.class, CodeTransformationTestGenerated.IfToReturnAsymmetrically.class, CodeTransformationTestGenerated.WhenToAssignment.class, CodeTransformationTestGenerated.WhenToReturn.class, CodeTransformationTestGenerated.AssignmentToIf.class, CodeTransformationTestGenerated.AssignmentToWhen.class, CodeTransformationTestGenerated.PropertyToIf.class, CodeTransformationTestGenerated.PropertyToWhen.class, CodeTransformationTestGenerated.ReturnToIf.class, CodeTransformationTestGenerated.ReturnToWhen.class, CodeTransformationTestGenerated.IfToWhen.class, CodeTransformationTestGenerated.WhenToIf.class, CodeTransformationTestGenerated.Flatten.class, CodeTransformationTestGenerated.Merge.class, CodeTransformationTestGenerated.IntroduceSubject.class, CodeTransformationTestGenerated.EliminateSubject.class, CodeTransformationTestGenerated.Split.class, CodeTransformationTestGenerated.Join.class, CodeTransformationTestGenerated.ConvertMemberToExtension.class, CodeTransformationTestGenerated.ReconstructedType.class, CodeTransformationTestGenerated.RemoveUnnecessaryParentheses.class, CodeTransformationTestGenerated.ReplaceWithDotQualifiedMethodCall.class, CodeTransformationTestGenerated.ReplaceWithInfixFunctionCall.class}) +@InnerTestClasses({CodeTransformationTestGenerated.IfToAssignment.class, CodeTransformationTestGenerated.IfToReturn.class, CodeTransformationTestGenerated.IfToReturnAsymmetrically.class, CodeTransformationTestGenerated.WhenToAssignment.class, CodeTransformationTestGenerated.WhenToReturn.class, CodeTransformationTestGenerated.AssignmentToIf.class, CodeTransformationTestGenerated.AssignmentToWhen.class, CodeTransformationTestGenerated.PropertyToIf.class, CodeTransformationTestGenerated.PropertyToWhen.class, CodeTransformationTestGenerated.ReturnToIf.class, CodeTransformationTestGenerated.ReturnToWhen.class, CodeTransformationTestGenerated.IfToWhen.class, CodeTransformationTestGenerated.WhenToIf.class, CodeTransformationTestGenerated.Flatten.class, CodeTransformationTestGenerated.Merge.class, CodeTransformationTestGenerated.IntroduceSubject.class, CodeTransformationTestGenerated.EliminateSubject.class, CodeTransformationTestGenerated.Split.class, CodeTransformationTestGenerated.Join.class, CodeTransformationTestGenerated.ConvertMemberToExtension.class, CodeTransformationTestGenerated.ReconstructedType.class, CodeTransformationTestGenerated.RemoveUnnecessaryParentheses.class, CodeTransformationTestGenerated.ReplaceWithDotQualifiedMethodCall.class, CodeTransformationTestGenerated.ReplaceWithInfixFunctionCall.class, CodeTransformationTestGenerated.RemoveCurlyBracesFromTemplate.class}) public class CodeTransformationTestGenerated extends AbstractCodeTransformationTest { @TestMetadata("idea/testData/intentions/branched/folding/ifToAssignment") public static class IfToAssignment extends AbstractCodeTransformationTest { @@ -1299,6 +1296,69 @@ public class CodeTransformationTestGenerated extends AbstractCodeTransformationT } + @TestMetadata("idea/testData/intentions/removeCurlyBracesFromTemplate") + public static class RemoveCurlyBracesFromTemplate extends AbstractCodeTransformationTest { + public void testAllFilesPresentInRemoveCurlyBracesFromTemplate() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("idea/testData/intentions/removeCurlyBracesFromTemplate"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("necessaryBrackets1.kt") + public void testNecessaryBrackets1() throws Exception { + doTestRemoveCurlyFromTemplate("idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets1.kt"); + } + + @TestMetadata("necessaryBrackets2.kt") + public void testNecessaryBrackets2() throws Exception { + doTestRemoveCurlyFromTemplate("idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets2.kt"); + } + + @TestMetadata("necessaryBrackets3.kt") + public void testNecessaryBrackets3() throws Exception { + doTestRemoveCurlyFromTemplate("idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets3.kt"); + } + + @TestMetadata("necessaryBrackets4.kt") + public void testNecessaryBrackets4() throws Exception { + doTestRemoveCurlyFromTemplate("idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets4.kt"); + } + + @TestMetadata("necessaryBrackets5.kt") + public void testNecessaryBrackets5() throws Exception { + doTestRemoveCurlyFromTemplate("idea/testData/intentions/removeCurlyBracesFromTemplate/necessaryBrackets5.kt"); + } + + @TestMetadata("unnecessaryBrackets1.kt") + public void testUnnecessaryBrackets1() throws Exception { + doTestRemoveCurlyFromTemplate("idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets1.kt"); + } + + @TestMetadata("unnecessaryBrackets2.kt") + public void testUnnecessaryBrackets2() throws Exception { + doTestRemoveCurlyFromTemplate("idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets2.kt"); + } + + @TestMetadata("unnecessaryBrackets3.kt") + public void testUnnecessaryBrackets3() throws Exception { + doTestRemoveCurlyFromTemplate("idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets3.kt"); + } + + @TestMetadata("unnecessaryBrackets4.kt") + public void testUnnecessaryBrackets4() throws Exception { + doTestRemoveCurlyFromTemplate("idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets4.kt"); + } + + @TestMetadata("unnecessaryBrackets5.kt") + public void testUnnecessaryBrackets5() throws Exception { + doTestRemoveCurlyFromTemplate("idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets5.kt"); + } + + @TestMetadata("unnecessaryBrackets6.kt") + public void testUnnecessaryBrackets6() throws Exception { + doTestRemoveCurlyFromTemplate("idea/testData/intentions/removeCurlyBracesFromTemplate/unnecessaryBrackets6.kt"); + } + + } + public static Test suite() { TestSuite suite = new TestSuite("CodeTransformationTestGenerated"); suite.addTestSuite(IfToAssignment.class); @@ -1325,6 +1385,7 @@ public class CodeTransformationTestGenerated extends AbstractCodeTransformationT suite.addTestSuite(RemoveUnnecessaryParentheses.class); suite.addTestSuite(ReplaceWithDotQualifiedMethodCall.class); suite.addTestSuite(ReplaceWithInfixFunctionCall.class); + suite.addTestSuite(RemoveCurlyBracesFromTemplate.class); return suite; } }