diff --git a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt index 6ab9a049246..a542d1248f7 100644 --- a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt @@ -408,6 +408,7 @@ fun main(args: Array) { model("intentions/insertExplicitTypeArguments", testMethod = "doTestInsertExplicitTypeArguments") model("intentions/removeExplicitTypeArguments", testMethod = "doTestRemoveExplicitTypeArguments") model("intentions/convertAssertToIf", testMethod = "doTestConvertAssertToIfWithThrowIntention") + model("intentions/convertIfToAssert", testMethod = "doTestConvertIfWithThrowToAssertIntention") } testClass(javaClass()) { diff --git a/idea/resources/intentionDescriptions/ConvertIfWithThrowToAssertIntention/after.kt.template b/idea/resources/intentionDescriptions/ConvertIfWithThrowToAssertIntention/after.kt.template new file mode 100644 index 00000000000..bbc48736afa --- /dev/null +++ b/idea/resources/intentionDescriptions/ConvertIfWithThrowToAssertIntention/after.kt.template @@ -0,0 +1,3 @@ +fun foo() { + assert(!true, "text") +} \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/ConvertIfWithThrowToAssertIntention/before.kt.template b/idea/resources/intentionDescriptions/ConvertIfWithThrowToAssertIntention/before.kt.template new file mode 100644 index 00000000000..bc6e26e894d --- /dev/null +++ b/idea/resources/intentionDescriptions/ConvertIfWithThrowToAssertIntention/before.kt.template @@ -0,0 +1,5 @@ +fun foo() { + if (true) { + throw AssertionError("text") + } +} \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/ConvertIfWithThrowToAssertIntention/description.html b/idea/resources/intentionDescriptions/ConvertIfWithThrowToAssertIntention/description.html new file mode 100644 index 00000000000..afd8a6808a9 --- /dev/null +++ b/idea/resources/intentionDescriptions/ConvertIfWithThrowToAssertIntention/description.html @@ -0,0 +1,5 @@ + + +This intention converts an if statement that throws an AssertionError exception into an assertion + + \ No newline at end of file diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index 57675a34fce..56dc561e620 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -682,6 +682,11 @@ Kotlin + + org.jetbrains.jet.plugin.intentions.ConvertIfWithThrowToAssertIntention + Kotlin + + ("convert.if.with.throw.to.assert", javaClass()) { + + override fun isApplicableTo(element: JetIfExpression): Boolean { + if (element.getElse() != null) return false + + val thenExpr = element.getThen()?.extractExpressionIfSingle() + if (thenExpr !is JetThrowExpression) return false + + val thrownExpr = getSelector(thenExpr.getThrownExpression()) + if (thrownExpr !is JetCallExpression) return false + + if (thrownExpr.getCalleeExpression()?.getText() != "AssertionError") return false + + val paramAmount = thrownExpr.getValueArguments().size + if (paramAmount > 1) return false + + val context = AnalyzerFacadeWithCache.getContextForElement(thrownExpr) + val resolvedCall = context[BindingContext.RESOLVED_CALL, thrownExpr.getCalleeExpression()] + if (resolvedCall == null) return false + + return DescriptorUtils.getFqName(resolvedCall.getResultingDescriptor()).toString() == "java.lang.AssertionError." + } + + override fun applyTo(element: JetIfExpression, editor: Editor) { + val condition = element.getCondition() + if (condition == null) return + + val thenExpr = element.getThen()?.extractExpressionIfSingle() as JetThrowExpression + val thrownExpr = getSelector(thenExpr.getThrownExpression()) as JetCallExpression + + val args = thrownExpr.getValueArguments() + val paramText = + if (args.isNotEmpty()) { + val param = args.first!!.getArgumentExpression()!! + if (param.isNullExpression()) "" else ", ${param.getText()}" + } else { + "" + } + + val negatedCondition = JetPsiFactory.createExpression(element.getProject(), "!true") as JetPrefixExpression + negatedCondition.getBaseExpression()!!.replace(condition) + condition.replace(negatedCondition) + + val newCondition = element.getCondition() as JetPrefixExpression + val simplifier = SimplifyNegatedBinaryExpressionIntention() + if (simplifier.isApplicableTo(newCondition)) { + simplifier.applyTo(newCondition, editor) + } + + val assertText = "kotlin.assert(${element.getCondition()?.getText()} $paramText)" + val assertExpr = JetPsiFactory.createExpression(element.getProject(), assertText) + + val newExpr = element.replace(assertExpr) as JetExpression + ShortenReferences.process(newExpr) + } + + private fun getSelector(element: JetExpression?): JetExpression? { + if (element is JetDotQualifiedExpression) { + return element.getSelectorExpression() + } + return element + } +} diff --git a/idea/testData/intentions/convertIfToAssert/assertOverloaded.kt b/idea/testData/intentions/convertIfToAssert/assertOverloaded.kt new file mode 100644 index 00000000000..96b46d262ac --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/assertOverloaded.kt @@ -0,0 +1,8 @@ +// WITH_RUNTIME +fun foo() { + if (true) { + throw AssertionError("text") + } +} + +fun assert(x: Boolean, y: Any) {} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/assertOverloaded.kt.after b/idea/testData/intentions/convertIfToAssert/assertOverloaded.kt.after new file mode 100644 index 00000000000..c1072aac021 --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/assertOverloaded.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + kotlin.assert(!true, "text") +} + +fun assert(x: Boolean, y: Any) {} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/assertOverloaded2.kt b/idea/testData/intentions/convertIfToAssert/assertOverloaded2.kt new file mode 100644 index 00000000000..43ca6e251e6 --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/assertOverloaded2.kt @@ -0,0 +1,10 @@ +// WITH_RUNTIME +package foo.kotlin + +fun foo() { + if (true) { + throw AssertionError("text") + } +} + +fun assert(x: Boolean, y: Any) {} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/assertOverloaded2.kt.after b/idea/testData/intentions/convertIfToAssert/assertOverloaded2.kt.after new file mode 100644 index 00000000000..07789087d6f --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/assertOverloaded2.kt.after @@ -0,0 +1,8 @@ +// WITH_RUNTIME +package foo.kotlin + +fun foo() { + kotlin.assert(!true, "text") +} + +fun assert(x: Boolean, y: Any) {} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/booleanCondition.kt b/idea/testData/intentions/convertIfToAssert/booleanCondition.kt new file mode 100644 index 00000000000..42128a65196 --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/booleanCondition.kt @@ -0,0 +1,7 @@ +// WITH_RUNTIME +fun foo() { + val x = true + if (x && false) { + throw AssertionError("text") + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/booleanCondition.kt.after b/idea/testData/intentions/convertIfToAssert/booleanCondition.kt.after new file mode 100644 index 00000000000..274cebfc4c5 --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/booleanCondition.kt.after @@ -0,0 +1,5 @@ +// WITH_RUNTIME +fun foo() { + val x = true + assert(!(x && false), "text") +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/dotQualifiedThrow.kt b/idea/testData/intentions/convertIfToAssert/dotQualifiedThrow.kt new file mode 100644 index 00000000000..9a5f57d5ef2 --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/dotQualifiedThrow.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + if (true) { + throw java.lang.AssertionError("text") + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/dotQualifiedThrow.kt.after b/idea/testData/intentions/convertIfToAssert/dotQualifiedThrow.kt.after new file mode 100644 index 00000000000..03ec5eb47c9 --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/dotQualifiedThrow.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo() { + assert(!true, "text") +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/inapplicableAssertionErrorOverloaded.kt b/idea/testData/intentions/convertIfToAssert/inapplicableAssertionErrorOverloaded.kt new file mode 100644 index 00000000000..641dc0fdcad --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/inapplicableAssertionErrorOverloaded.kt @@ -0,0 +1,9 @@ +// IS_APPLICABLE: false +// WITH_RUNTIME +fun foo() { + if (1 == 0) { + throw AssertionError("text") + } +} + +class AssertionError(x: String): Exception(x) {} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/inapplicableCauseSent.kt b/idea/testData/intentions/convertIfToAssert/inapplicableCauseSent.kt new file mode 100644 index 00000000000..77e7063c82f --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/inapplicableCauseSent.kt @@ -0,0 +1,7 @@ +// IS_APPLICABLE: false +// WITH_RUNTIME +fun foo() { + if (1 == 0) { + throw AssertionError("text", Exception()) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/inapplicableHasElse.kt b/idea/testData/intentions/convertIfToAssert/inapplicableHasElse.kt new file mode 100644 index 00000000000..9709dffc68e --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/inapplicableHasElse.kt @@ -0,0 +1,9 @@ +// IS_APPLICABLE: false +// WITH_RUNTIME +fun foo() { + if (1 == 0) { + throw AssertionError("text") + } else { + val x = 1 + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/inapplicableMoreThanSingleExpression.kt b/idea/testData/intentions/convertIfToAssert/inapplicableMoreThanSingleExpression.kt new file mode 100644 index 00000000000..85a21a75fcb --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/inapplicableMoreThanSingleExpression.kt @@ -0,0 +1,8 @@ +// IS_APPLICABLE: false +// WITH_RUNTIME +fun foo() { + if (1 == 0) { + val y = 1 + throw AssertionError("text") + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/inapplicableMoreThanSingleExpression2.kt b/idea/testData/intentions/convertIfToAssert/inapplicableMoreThanSingleExpression2.kt new file mode 100644 index 00000000000..9a9f8ca0aac --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/inapplicableMoreThanSingleExpression2.kt @@ -0,0 +1,8 @@ +// IS_APPLICABLE: false +// WITH_RUNTIME +fun foo() { + if (1 == 0) { + throw AssertionError("text") + val y = 1 + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/noMessageSent.kt b/idea/testData/intentions/convertIfToAssert/noMessageSent.kt new file mode 100644 index 00000000000..ca41f261d9a --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/noMessageSent.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + if (true) { + throw AssertionError() + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/noMessageSent.kt.after b/idea/testData/intentions/convertIfToAssert/noMessageSent.kt.after new file mode 100644 index 00000000000..d656eeba018 --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/noMessageSent.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo() { + assert(!true) +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/nullSent.kt b/idea/testData/intentions/convertIfToAssert/nullSent.kt new file mode 100644 index 00000000000..aded6800c65 --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/nullSent.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + if (true) { + throw AssertionError(null) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/nullSent.kt.after b/idea/testData/intentions/convertIfToAssert/nullSent.kt.after new file mode 100644 index 00000000000..d656eeba018 --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/nullSent.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo() { + assert(!true) +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/simpleConvert.kt b/idea/testData/intentions/convertIfToAssert/simpleConvert.kt new file mode 100644 index 00000000000..1d50a58d487 --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/simpleConvert.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + if (true) { + throw AssertionError("text") + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/simpleConvert.kt.after b/idea/testData/intentions/convertIfToAssert/simpleConvert.kt.after new file mode 100644 index 00000000000..03ec5eb47c9 --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/simpleConvert.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo() { + assert(!true, "text") +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/simplifiedCondition.kt b/idea/testData/intentions/convertIfToAssert/simplifiedCondition.kt new file mode 100644 index 00000000000..9bac11aff09 --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/simplifiedCondition.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + if (1 == 0) { + throw AssertionError("text") + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertIfToAssert/simplifiedCondition.kt.after b/idea/testData/intentions/convertIfToAssert/simplifiedCondition.kt.after new file mode 100644 index 00000000000..ad7f9b3e65c --- /dev/null +++ b/idea/testData/intentions/convertIfToAssert/simplifiedCondition.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo() { + assert(1 != 0, "text") +} \ 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 645a8c87b6a..488818b6e0b 100644 --- a/idea/tests/org/jetbrains/jet/plugin/intentions/AbstractCodeTransformationTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/intentions/AbstractCodeTransformationTest.java @@ -237,6 +237,10 @@ public abstract class AbstractCodeTransformationTest extends LightCodeInsightTes doTestIntention(path, new ConvertAssertToIfWithThrowIntention()); } + public void doTestConvertIfWithThrowToAssertIntention(@NotNull String path) throws Exception { + doTestIntention(path, new ConvertIfWithThrowToAssertIntention()); + } + public void doTestSplitIf(@NotNull String path) throws Exception { doTestIntention(path, new SplitIfIntention()); } diff --git a/idea/tests/org/jetbrains/jet/plugin/intentions/CodeTransformationTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/intentions/CodeTransformationTestGenerated.java index 8bae2dab3dd..305e814ef0a 100644 --- a/idea/tests/org/jetbrains/jet/plugin/intentions/CodeTransformationTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/intentions/CodeTransformationTestGenerated.java @@ -16,18 +16,21 @@ 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 java.io.File; -import java.util.regex.Pattern; +import org.jetbrains.jet.plugin.intentions.AbstractCodeTransformationTest; /** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ @SuppressWarnings("all") -@InnerTestClasses({CodeTransformationTestGenerated.DoubleBangToIfThen.class, CodeTransformationTestGenerated.IfThenToDoubleBang.class, CodeTransformationTestGenerated.ElvisToIfThen.class, CodeTransformationTestGenerated.IfThenToElvis.class, CodeTransformationTestGenerated.SafeAccessToIfThen.class, CodeTransformationTestGenerated.IfThenToSafeAccess.class, 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, CodeTransformationTestGenerated.MoveLambdaInsideParentheses.class, CodeTransformationTestGenerated.MoveLambdaOutsideParentheses.class, CodeTransformationTestGenerated.ReplaceExplicitFunctionLiteralParamWithIt.class, CodeTransformationTestGenerated.ReplaceItWithExplicitFunctionLiteralParam.class, CodeTransformationTestGenerated.RemoveBraces.class, CodeTransformationTestGenerated.AddBraces.class, CodeTransformationTestGenerated.ReplaceGetIntention.class, CodeTransformationTestGenerated.ReplaceContainsIntention.class, CodeTransformationTestGenerated.ReplaceBinaryInfixIntention.class, CodeTransformationTestGenerated.ReplaceUnaryPrefixIntention.class, CodeTransformationTestGenerated.ReplaceInvokeIntention.class, CodeTransformationTestGenerated.SimplifyNegatedBinaryExpressionIntention.class, CodeTransformationTestGenerated.ConvertNegatedBooleanSequence.class, CodeTransformationTestGenerated.ConvertNegatedExpressionWithDemorgansLaw.class, CodeTransformationTestGenerated.SwapBinaryExpression.class, CodeTransformationTestGenerated.SplitIf.class, CodeTransformationTestGenerated.ReplaceWithOperatorAssign.class, CodeTransformationTestGenerated.ReplaceWithTraditionalAssignment.class, CodeTransformationTestGenerated.SimplifyBooleanWithConstants.class, CodeTransformationTestGenerated.InsertExplicitTypeArguments.class, CodeTransformationTestGenerated.RemoveExplicitTypeArguments.class, CodeTransformationTestGenerated.ConvertAssertToIf.class}) +@InnerTestClasses({CodeTransformationTestGenerated.DoubleBangToIfThen.class, CodeTransformationTestGenerated.IfThenToDoubleBang.class, CodeTransformationTestGenerated.ElvisToIfThen.class, CodeTransformationTestGenerated.IfThenToElvis.class, CodeTransformationTestGenerated.SafeAccessToIfThen.class, CodeTransformationTestGenerated.IfThenToSafeAccess.class, 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, CodeTransformationTestGenerated.MoveLambdaInsideParentheses.class, CodeTransformationTestGenerated.MoveLambdaOutsideParentheses.class, CodeTransformationTestGenerated.ReplaceExplicitFunctionLiteralParamWithIt.class, CodeTransformationTestGenerated.ReplaceItWithExplicitFunctionLiteralParam.class, CodeTransformationTestGenerated.RemoveBraces.class, CodeTransformationTestGenerated.AddBraces.class, CodeTransformationTestGenerated.ReplaceGetIntention.class, CodeTransformationTestGenerated.ReplaceContainsIntention.class, CodeTransformationTestGenerated.ReplaceBinaryInfixIntention.class, CodeTransformationTestGenerated.ReplaceUnaryPrefixIntention.class, CodeTransformationTestGenerated.ReplaceInvokeIntention.class, CodeTransformationTestGenerated.SimplifyNegatedBinaryExpressionIntention.class, CodeTransformationTestGenerated.ConvertNegatedBooleanSequence.class, CodeTransformationTestGenerated.ConvertNegatedExpressionWithDemorgansLaw.class, CodeTransformationTestGenerated.SwapBinaryExpression.class, CodeTransformationTestGenerated.SplitIf.class, CodeTransformationTestGenerated.ReplaceWithOperatorAssign.class, CodeTransformationTestGenerated.ReplaceWithTraditionalAssignment.class, CodeTransformationTestGenerated.SimplifyBooleanWithConstants.class, CodeTransformationTestGenerated.InsertExplicitTypeArguments.class, CodeTransformationTestGenerated.RemoveExplicitTypeArguments.class, CodeTransformationTestGenerated.ConvertAssertToIf.class, CodeTransformationTestGenerated.ConvertIfToAssert.class}) public class CodeTransformationTestGenerated extends AbstractCodeTransformationTest { @TestMetadata("idea/testData/intentions/branched/doubleBangToIfThen") public static class DoubleBangToIfThen extends AbstractCodeTransformationTest { @@ -3881,6 +3884,79 @@ public class CodeTransformationTestGenerated extends AbstractCodeTransformationT } + @TestMetadata("idea/testData/intentions/convertIfToAssert") + public static class ConvertIfToAssert extends AbstractCodeTransformationTest { + public void testAllFilesPresentInConvertIfToAssert() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("idea/testData/intentions/convertIfToAssert"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("assertOverloaded.kt") + public void testAssertOverloaded() throws Exception { + doTestConvertIfWithThrowToAssertIntention("idea/testData/intentions/convertIfToAssert/assertOverloaded.kt"); + } + + @TestMetadata("assertOverloaded2.kt") + public void testAssertOverloaded2() throws Exception { + doTestConvertIfWithThrowToAssertIntention("idea/testData/intentions/convertIfToAssert/assertOverloaded2.kt"); + } + + @TestMetadata("booleanCondition.kt") + public void testBooleanCondition() throws Exception { + doTestConvertIfWithThrowToAssertIntention("idea/testData/intentions/convertIfToAssert/booleanCondition.kt"); + } + + @TestMetadata("dotQualifiedThrow.kt") + public void testDotQualifiedThrow() throws Exception { + doTestConvertIfWithThrowToAssertIntention("idea/testData/intentions/convertIfToAssert/dotQualifiedThrow.kt"); + } + + @TestMetadata("inapplicableAssertionErrorOverloaded.kt") + public void testInapplicableAssertionErrorOverloaded() throws Exception { + doTestConvertIfWithThrowToAssertIntention("idea/testData/intentions/convertIfToAssert/inapplicableAssertionErrorOverloaded.kt"); + } + + @TestMetadata("inapplicableCauseSent.kt") + public void testInapplicableCauseSent() throws Exception { + doTestConvertIfWithThrowToAssertIntention("idea/testData/intentions/convertIfToAssert/inapplicableCauseSent.kt"); + } + + @TestMetadata("inapplicableHasElse.kt") + public void testInapplicableHasElse() throws Exception { + doTestConvertIfWithThrowToAssertIntention("idea/testData/intentions/convertIfToAssert/inapplicableHasElse.kt"); + } + + @TestMetadata("inapplicableMoreThanSingleExpression.kt") + public void testInapplicableMoreThanSingleExpression() throws Exception { + doTestConvertIfWithThrowToAssertIntention("idea/testData/intentions/convertIfToAssert/inapplicableMoreThanSingleExpression.kt"); + } + + @TestMetadata("inapplicableMoreThanSingleExpression2.kt") + public void testInapplicableMoreThanSingleExpression2() throws Exception { + doTestConvertIfWithThrowToAssertIntention("idea/testData/intentions/convertIfToAssert/inapplicableMoreThanSingleExpression2.kt"); + } + + @TestMetadata("noMessageSent.kt") + public void testNoMessageSent() throws Exception { + doTestConvertIfWithThrowToAssertIntention("idea/testData/intentions/convertIfToAssert/noMessageSent.kt"); + } + + @TestMetadata("nullSent.kt") + public void testNullSent() throws Exception { + doTestConvertIfWithThrowToAssertIntention("idea/testData/intentions/convertIfToAssert/nullSent.kt"); + } + + @TestMetadata("simpleConvert.kt") + public void testSimpleConvert() throws Exception { + doTestConvertIfWithThrowToAssertIntention("idea/testData/intentions/convertIfToAssert/simpleConvert.kt"); + } + + @TestMetadata("simplifiedCondition.kt") + public void testSimplifiedCondition() throws Exception { + doTestConvertIfWithThrowToAssertIntention("idea/testData/intentions/convertIfToAssert/simplifiedCondition.kt"); + } + + } + public static Test suite() { TestSuite suite = new TestSuite("CodeTransformationTestGenerated"); suite.addTestSuite(DoubleBangToIfThen.class); @@ -3936,6 +4012,7 @@ public class CodeTransformationTestGenerated extends AbstractCodeTransformationT suite.addTestSuite(InsertExplicitTypeArguments.class); suite.addTestSuite(RemoveExplicitTypeArguments.class); suite.addTestSuite(ConvertAssertToIf.class); + suite.addTestSuite(ConvertIfToAssert.class); return suite; } }