Implement general expresion remover

This commit is contained in:
Alexey Sedunov
2013-06-19 16:12:30 +04:00
parent 0b634cc918
commit d019c23395
15 changed files with 116 additions and 1 deletions
@@ -375,6 +375,7 @@ public class GenerateTests {
"idea/tests/",
"UnwrapRemoveTestGenerated",
AbstractUnwrapRemoveTest.class,
testModel("idea/testData/codeInsight/unwrapAndRemove/removeExpression", "doTestExpressionRemover"),
testModel("idea/testData/codeInsight/unwrapAndRemove/unwrapThen", "doTestThenUnwrapper"),
testModel("idea/testData/codeInsight/unwrapAndRemove/unwrapElse", "doTestElseUnwrapper"),
testModel("idea/testData/codeInsight/unwrapAndRemove/removeElse", "doTestElseRemover"),
@@ -26,6 +26,17 @@ public class KoitlinUnwrappers {
private KoitlinUnwrappers() {
}
public static class KotlinExpressionRemover extends KotlinRemover {
public KotlinExpressionRemover(String key) {
super(key);
}
@Override
public boolean isApplicableTo(PsiElement e) {
return e instanceof JetExpression && e.getParent() instanceof JetBlockExpression;
}
}
public static class KotlinElseUnwrapper extends KotlinComponentUnwrapper {
public KotlinElseUnwrapper(String key) {
super(key);
@@ -23,6 +23,7 @@ public class KotlinUnwrapDescriptor extends UnwrapDescriptorBase {
@Override
protected Unwrapper[] createUnwrappers() {
return new Unwrapper[] {
new KoitlinUnwrappers.KotlinExpressionRemover("remove.expression"),
new KoitlinUnwrappers.KotlinThenUnwrapper("unwrap.expression"),
new KoitlinUnwrappers.KotlinElseRemover("remove.else"),
new KoitlinUnwrappers.KotlinElseUnwrapper("unwrap.else"),
@@ -0,0 +1,10 @@
// OPTION: 0
fun foo(n : Int): Int {
<caret>if (n > 0) {
1
} else {
-1
}
return 0
}
@@ -0,0 +1,5 @@
// OPTION: 0
fun foo(n : Int): Int {<caret>
return 0
}
@@ -0,0 +1,9 @@
// OPTION: 3
fun foo(n : Int): Int {
return 10 +
<caret>if (n > 0) {
1
} else {
-1
}
}
@@ -0,0 +1,3 @@
// OPTION: 3
fun foo(n : Int): Int {
<caret>}
@@ -0,0 +1,8 @@
// OPTION: 3
fun foo(n : Int): Int {
return <caret>if (n > 0) {
1
} else {
-1
}
}
@@ -0,0 +1,3 @@
// OPTION: 3
fun foo(n : Int): Int {
<caret>}
@@ -0,0 +1,10 @@
// OPTION: 0
fun foo(n : Int): Int {
<caret>try {
n/0
} catch (e: Exception) {
-1
}
return 0
}
@@ -0,0 +1,5 @@
// OPTION: 0
fun foo(n : Int): Int {<caret>
return 0
}
@@ -0,0 +1,8 @@
// OPTION: 1
fun foo(n : Int): Int {
return <caret>try {
n/0
} catch (e: Exception) {
-1
}
}
@@ -0,0 +1,3 @@
// OPTION: 1
fun foo(n : Int): Int {
<caret>}
@@ -30,6 +30,10 @@ import java.io.File;
import java.util.List;
public abstract class AbstractUnwrapRemoveTest extends LightCodeInsightTestCase {
public void doTestExpressionRemover(@NotNull String path) throws Exception {
doTest(path, KoitlinUnwrappers.KotlinExpressionRemover.class);
}
public void doTestThenUnwrapper(@NotNull String path) throws Exception {
doTest(path, KoitlinUnwrappers.KotlinThenUnwrapper.class);
}
@@ -30,8 +30,41 @@ import org.jetbrains.jet.plugin.codeInsight.unwrap.AbstractUnwrapRemoveTest;
/** This class is generated by {@link org.jetbrains.jet.generators.tests.GenerateTests}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@InnerTestClasses({UnwrapRemoveTestGenerated.UnwrapThen.class, UnwrapRemoveTestGenerated.UnwrapElse.class, UnwrapRemoveTestGenerated.RemoveElse.class, UnwrapRemoveTestGenerated.UnwrapLoop.class, UnwrapRemoveTestGenerated.UnwrapTry.class, UnwrapRemoveTestGenerated.UnwrapCatch.class, UnwrapRemoveTestGenerated.RemoveCatch.class, UnwrapRemoveTestGenerated.UnwrapFinally.class, UnwrapRemoveTestGenerated.RemoveFinally.class, UnwrapRemoveTestGenerated.UnwrapLambda.class})
@InnerTestClasses({UnwrapRemoveTestGenerated.RemoveExpression.class, UnwrapRemoveTestGenerated.UnwrapThen.class, UnwrapRemoveTestGenerated.UnwrapElse.class, UnwrapRemoveTestGenerated.RemoveElse.class, UnwrapRemoveTestGenerated.UnwrapLoop.class, UnwrapRemoveTestGenerated.UnwrapTry.class, UnwrapRemoveTestGenerated.UnwrapCatch.class, UnwrapRemoveTestGenerated.RemoveCatch.class, UnwrapRemoveTestGenerated.UnwrapFinally.class, UnwrapRemoveTestGenerated.RemoveFinally.class, UnwrapRemoveTestGenerated.UnwrapLambda.class})
public class UnwrapRemoveTestGenerated extends AbstractUnwrapRemoveTest {
@TestMetadata("idea/testData/codeInsight/unwrapAndRemove/removeExpression")
public static class RemoveExpression extends AbstractUnwrapRemoveTest {
public void testAllFilesPresentInRemoveExpression() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/codeInsight/unwrapAndRemove/removeExpression"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("ifInBlock.kt")
public void testIfInBlock() throws Exception {
doTestExpressionRemover("idea/testData/codeInsight/unwrapAndRemove/removeExpression/ifInBlock.kt");
}
@TestMetadata("ifInExpressionInReturn.kt")
public void testIfInExpressionInReturn() throws Exception {
doTestExpressionRemover("idea/testData/codeInsight/unwrapAndRemove/removeExpression/ifInExpressionInReturn.kt");
}
@TestMetadata("ifInReturn.kt")
public void testIfInReturn() throws Exception {
doTestExpressionRemover("idea/testData/codeInsight/unwrapAndRemove/removeExpression/ifInReturn.kt");
}
@TestMetadata("tryInBlock.kt")
public void testTryInBlock() throws Exception {
doTestExpressionRemover("idea/testData/codeInsight/unwrapAndRemove/removeExpression/tryInBlock.kt");
}
@TestMetadata("tryInReturn.kt")
public void testTryInReturn() throws Exception {
doTestExpressionRemover("idea/testData/codeInsight/unwrapAndRemove/removeExpression/tryInReturn.kt");
}
}
@TestMetadata("idea/testData/codeInsight/unwrapAndRemove/unwrapThen")
public static class UnwrapThen extends AbstractUnwrapRemoveTest {
public void testAllFilesPresentInUnwrapThen() throws Exception {
@@ -274,6 +307,7 @@ public class UnwrapRemoveTestGenerated extends AbstractUnwrapRemoveTest {
public static Test suite() {
TestSuite suite = new TestSuite("UnwrapRemoveTestGenerated");
suite.addTestSuite(RemoveExpression.class);
suite.addTestSuite(UnwrapThen.class);
suite.addTestSuite(UnwrapElse.class);
suite.addTestSuite(RemoveElse.class);