J2K converter applies IfNullToElvisIntention automatically

This commit is contained in:
Valentin Kipyatkov
2015-04-29 17:10:04 +03:00
parent 38f735dcac
commit 7d6145e105
6 changed files with 45 additions and 4 deletions
@@ -41,6 +41,11 @@ public class IfNullToElvisIntention : JetSelfTargetingOffsetIndependentIntention
}
override fun applyTo(element: JetIfExpression, editor: Editor) {
val newElvis = applyTo(element)
editor.getCaretModel().moveToOffset(newElvis.getRight()!!.getTextOffset())
}
public fun applyTo(element: JetIfExpression): JetBinaryExpression {
val (initializer, declaration, ifNullExpr) = calcData(element)!!
val factory = JetPsiFactory(element)
@@ -67,7 +72,7 @@ public class IfNullToElvisIntention : JetSelfTargetingOffsetIndependentIntention
declaration.setType(explicitTypeToAdd)
}
editor.getCaretModel().moveToOffset(newElvis.getRight()!!.getTextOffset())
return newElvis
}
private data class Data(
@@ -18,16 +18,14 @@ package org.jetbrains.kotlin.idea.j2k
import com.intellij.openapi.editor.RangeMarker
import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiComment
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiWhiteSpace
import com.intellij.psi.codeStyle.CodeStyleManager
import com.intellij.psi.search.LocalSearchScope
import com.intellij.psi.search.searches.ReferencesSearch
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
import org.jetbrains.kotlin.idea.intentions.IfNullToElvisIntention
import org.jetbrains.kotlin.idea.intentions.RemoveExplicitTypeArguments
import org.jetbrains.kotlin.idea.intentions.SimplifyNegatedBinaryExpressionIntention
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.intentions.IfThenToElvisIntention
@@ -141,6 +139,15 @@ public class J2kPostProcessor(private val formatCode: Boolean) : PostProcessor {
return
}
}
run {
val intention = IfNullToElvisIntention()
if (intention.isApplicableTo(expression)) {
intention.applyTo(expression)
return
}
}
}
}
})
@@ -0,0 +1,9 @@
import java.io.File;
class C {
String foo(File file) {
File parent = file.getParentFile();
if (parent == null) return "";
return parent.getName();
}
}
@@ -0,0 +1,8 @@
import java.io.File
class C {
fun foo(file: File): String {
val parent = file.getParentFile() ?: return ""
return parent.getName()
}
}
@@ -937,6 +937,12 @@ public class JavaToKotlinConverterForWebDemoTestGenerated extends AbstractJavaTo
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("j2k/testData/fileOrElement/codeSimplifications"), Pattern.compile("^(.+)\\.java$"), true);
}
@TestMetadata("IfNullReturnToElvis.java")
public void testIfNullReturnToElvis() throws Exception {
String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/codeSimplifications/IfNullReturnToElvis.java");
doTest(fileName);
}
@TestMetadata("IfToElvis.java")
public void testIfToElvis() throws Exception {
String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/codeSimplifications/IfToElvis.java");
@@ -937,6 +937,12 @@ public class JavaToKotlinConverterSingleFileTestGenerated extends AbstractJavaTo
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("j2k/testData/fileOrElement/codeSimplifications"), Pattern.compile("^(.+)\\.java$"), true);
}
@TestMetadata("IfNullReturnToElvis.java")
public void testIfNullReturnToElvis() throws Exception {
String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/codeSimplifications/IfNullReturnToElvis.java");
doTest(fileName);
}
@TestMetadata("IfToElvis.java")
public void testIfToElvis() throws Exception {
String fileName = JetTestUtils.navigationMetadata("j2k/testData/fileOrElement/codeSimplifications/IfToElvis.java");