diff --git a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt index e4129b335a1..eba79973b0e 100644 --- a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.kt @@ -392,6 +392,7 @@ fun main(args: Array) { model("intentions/simplifyBooleanWithConstants", testMethod = "doTestSimplifyBooleanWithConstants") model("intentions/insertExplicitTypeArguments", testMethod = "doTestInsertExplicitTypeArguments") model("intentions/removeExplicitTypeArguments", testMethod = "doTestRemoveExplicitTypeArguments") + model("intentions/convertAssertToIf", testMethod = "doTestConvertAssertToIfWithThrowIntention") } testClass(javaClass()) { diff --git a/idea/resources/intentionDescriptions/ConvertAssertToIfWithThrowIntention/after.kt.template b/idea/resources/intentionDescriptions/ConvertAssertToIfWithThrowIntention/after.kt.template new file mode 100644 index 00000000000..631afca3b3e --- /dev/null +++ b/idea/resources/intentionDescriptions/ConvertAssertToIfWithThrowIntention/after.kt.template @@ -0,0 +1,5 @@ +fun foo() { + if (!true) { + throw AssertionException("text") + } +} diff --git a/idea/resources/intentionDescriptions/ConvertAssertToIfWithThrowIntention/before.kt.template b/idea/resources/intentionDescriptions/ConvertAssertToIfWithThrowIntention/before.kt.template new file mode 100644 index 00000000000..425fad76052 --- /dev/null +++ b/idea/resources/intentionDescriptions/ConvertAssertToIfWithThrowIntention/before.kt.template @@ -0,0 +1,3 @@ +fun foo() { + assert(true, "text") +} \ No newline at end of file diff --git a/idea/resources/intentionDescriptions/ConvertAssertToIfWithThrowIntention/description.html b/idea/resources/intentionDescriptions/ConvertAssertToIfWithThrowIntention/description.html new file mode 100644 index 00000000000..6a67b3c107e --- /dev/null +++ b/idea/resources/intentionDescriptions/ConvertAssertToIfWithThrowIntention/description.html @@ -0,0 +1,5 @@ + + +This intention converts an assert into an if statement that throws an exception if the condition is false + + \ No newline at end of file diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index 768a59f4932..0ceff10bc59 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -664,6 +664,11 @@ Kotlin + + org.jetbrains.jet.plugin.intentions.ConvertAssertToIfWithThrowIntention + Kotlin + + ( + "convert.assert.to.if.with.throw", javaClass()) { + + private var messageIsAFunction : Boolean by Delegates.notNull() + + override fun isApplicableTo(element: JetCallExpression): Boolean { + if (element.getCalleeExpression()?.getText() != "assert") return false + + val arguments = element.getValueArguments().size + val lambdas = element.getFunctionLiteralArguments().size + if (!(arguments == 1 && (lambdas == 1 || lambdas == 0)) && arguments != 2) return false + + val context = AnalyzerFacadeWithCache.getContextForElement(element) + val resolvedCall = context[BindingContext.RESOLVED_CALL, element.getCalleeExpression()] + if (resolvedCall == null) return false + + val valParameters = resolvedCall.getResultingDescriptor().getValueParameters() + if (valParameters.size > 1) { + messageIsAFunction = (valParameters[1].getType() != KotlinBuiltIns.getInstance().getAnyType()) + } else { + messageIsAFunction = false + } + + return DescriptorUtils.getFqName(resolvedCall.getResultingDescriptor()).toString() == "kotlin.assert" + } + + override fun applyTo(element: JetCallExpression, editor: Editor) { + val args = element.getValueArguments() + val condition = args[0]?.getArgumentExpression() + val lambdas = element.getFunctionLiteralArguments() + + val messageExpr: JetExpression? + if (args.size == 2) { + messageExpr = args[1]?.getArgumentExpression() + } else if (lambdas.isNotEmpty()) { + messageExpr = element.getFunctionLiteralArguments()[0] + } else { + messageExpr = JetPsiFactory.createExpression(element.getProject(), "\"Assertion failed\"") + } + + if (condition == null || messageExpr == null) return + + val message: String + if (messageIsAFunction && messageExpr is JetCallableReferenceExpression) { + message = "${messageExpr.getCallableReference().getText()}()" + } else if (messageIsAFunction) { + message = "${messageExpr.getText()}()" + } else { + message = "${messageExpr.getText()}" + } + + val negatedCondition = JetPsiFactory.createExpression(element.getProject(), "!true") as JetPrefixExpression + negatedCondition.getBaseExpression()?.replace(condition) + + val simplifier = SimplifyNegatedBinaryExpressionIntention() + if (simplifier.isApplicableTo(negatedCondition)) { + simplifier.applyTo(negatedCondition, editor) + } + + val assertTypeRef = JetPsiFactory.createType(element.getProject(), "java.lang.AssertionError") + ShortenReferences.process(assertTypeRef) + + val text = "if (${negatedCondition.getText()}) { throw ${assertTypeRef.getText()}(${message}) }" + element.replace(JetPsiFactory.createExpression(element.getProject(), text)) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/assertErrorOverloaded.kt b/idea/testData/intentions/convertAssertToIf/assertErrorOverloaded.kt new file mode 100644 index 00000000000..905257c92a8 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/assertErrorOverloaded.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + assert(true, "text") +} + +class AssertionError \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/assertErrorOverloaded.kt.after b/idea/testData/intentions/convertAssertToIf/assertErrorOverloaded.kt.after new file mode 100644 index 00000000000..816f615395a --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/assertErrorOverloaded.kt.after @@ -0,0 +1,8 @@ +// WITH_RUNTIME +fun foo() { + if (!true) { + throw lang.AssertionError("text") + } +} + +class AssertionError \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/booleanCondition.kt b/idea/testData/intentions/convertAssertToIf/booleanCondition.kt new file mode 100644 index 00000000000..a5e360eb3e3 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/booleanCondition.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo() { + assert(true && false, "text") +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/booleanCondition.kt.after b/idea/testData/intentions/convertAssertToIf/booleanCondition.kt.after new file mode 100644 index 00000000000..887d6df9ed0 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/booleanCondition.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + if (!(true && false)) { + throw AssertionError("text") + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/booleanConditionSimplified.kt b/idea/testData/intentions/convertAssertToIf/booleanConditionSimplified.kt new file mode 100644 index 00000000000..f03a44b1399 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/booleanConditionSimplified.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo() { + assert(1 > 0, "text") +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/booleanConditionSimplified.kt.after b/idea/testData/intentions/convertAssertToIf/booleanConditionSimplified.kt.after new file mode 100644 index 00000000000..4bcf747a4c8 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/booleanConditionSimplified.kt.after @@ -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/convertAssertToIf/booleanConditionSimplified2.kt b/idea/testData/intentions/convertAssertToIf/booleanConditionSimplified2.kt new file mode 100644 index 00000000000..59135636428 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/booleanConditionSimplified2.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo() { + assert(0 != 1, "text") +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/booleanConditionSimplified2.kt.after b/idea/testData/intentions/convertAssertToIf/booleanConditionSimplified2.kt.after new file mode 100644 index 00000000000..d68ed200c02 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/booleanConditionSimplified2.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + if (0 == 1) { + throw AssertionError("text") + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/booleanConditionWithVariables.kt b/idea/testData/intentions/convertAssertToIf/booleanConditionWithVariables.kt new file mode 100644 index 00000000000..a1c1864233c --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/booleanConditionWithVariables.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + val x = true + val y = false + assert(x || y, "text") +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/booleanConditionWithVariables.kt.after b/idea/testData/intentions/convertAssertToIf/booleanConditionWithVariables.kt.after new file mode 100644 index 00000000000..c4b74c42164 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/booleanConditionWithVariables.kt.after @@ -0,0 +1,8 @@ +// WITH_RUNTIME +fun foo() { + val x = true + val y = false + if (!(x || y)) { + throw AssertionError("text") + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/functionCallCondition.kt b/idea/testData/intentions/convertAssertToIf/functionCallCondition.kt new file mode 100644 index 00000000000..f2fc11fbb32 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/functionCallCondition.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + assert(bar(), "text") +} + +fun bar(): Boolean = true \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/functionCallCondition.kt.after b/idea/testData/intentions/convertAssertToIf/functionCallCondition.kt.after new file mode 100644 index 00000000000..453897bc474 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/functionCallCondition.kt.after @@ -0,0 +1,8 @@ +// WITH_RUNTIME +fun foo() { + if (!bar()) { + throw AssertionError("text") + } +} + +fun bar(): Boolean = true \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/functionMessageInsideParentheses.kt b/idea/testData/intentions/convertAssertToIf/functionMessageInsideParentheses.kt new file mode 100644 index 00000000000..c645cec6f06 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/functionMessageInsideParentheses.kt @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + assert(true, ::message) +} + +fun message(): String = "text" \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/functionMessageInsideParentheses.kt.after b/idea/testData/intentions/convertAssertToIf/functionMessageInsideParentheses.kt.after new file mode 100644 index 00000000000..0f7d3ac1749 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/functionMessageInsideParentheses.kt.after @@ -0,0 +1,8 @@ +// WITH_RUNTIME +fun foo() { + if (!true) { + throw AssertionError(message()) + } +} + +fun message(): String = "text" \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/inapplicableAssertOverloaded.kt b/idea/testData/intentions/convertAssertToIf/inapplicableAssertOverloaded.kt new file mode 100644 index 00000000000..490f0ecafdb --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/inapplicableAssertOverloaded.kt @@ -0,0 +1,7 @@ +// IS_APPLICABLE: false +// WITH_RUNTIME +fun foo() { + assert(true, "") +} + +fun assert(b: Boolean, s: String) {} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/inapplicableAssertOverloadedWithPackage.kt b/idea/testData/intentions/convertAssertToIf/inapplicableAssertOverloadedWithPackage.kt new file mode 100644 index 00000000000..4799dd5673d --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/inapplicableAssertOverloadedWithPackage.kt @@ -0,0 +1,9 @@ +// IS_APPLICABLE: false +// WITH_RUNTIME +package pr442.kotlin + +fun foo() { + assert(true, "") +} + +fun assert(b: Boolean, s: String) {} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/inapplicableNoCondition.kt b/idea/testData/intentions/convertAssertToIf/inapplicableNoCondition.kt new file mode 100644 index 00000000000..6dc4f21b0bd --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/inapplicableNoCondition.kt @@ -0,0 +1,6 @@ +// IS_APPLICABLE: false +// WITH_RUNTIME +// ERROR: No value passed for parameter value +fun foo() { + assert { "text" } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/lambdaMessageInsideParentheses.kt b/idea/testData/intentions/convertAssertToIf/lambdaMessageInsideParentheses.kt new file mode 100644 index 00000000000..eb6f3011d9a --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/lambdaMessageInsideParentheses.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo() { + assert(true, { "text" }) +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/lambdaMessageInsideParentheses.kt.after b/idea/testData/intentions/convertAssertToIf/lambdaMessageInsideParentheses.kt.after new file mode 100644 index 00000000000..e6ab611f942 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/lambdaMessageInsideParentheses.kt.after @@ -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/convertAssertToIf/lambdaMessageOutsideParentheses.kt b/idea/testData/intentions/convertAssertToIf/lambdaMessageOutsideParentheses.kt new file mode 100644 index 00000000000..0939757b318 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/lambdaMessageOutsideParentheses.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo() { + assert(true) { "text" } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/lambdaMessageOutsideParentheses.kt.after b/idea/testData/intentions/convertAssertToIf/lambdaMessageOutsideParentheses.kt.after new file mode 100644 index 00000000000..e6ab611f942 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/lambdaMessageOutsideParentheses.kt.after @@ -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/convertAssertToIf/lambdaVariable.kt b/idea/testData/intentions/convertAssertToIf/lambdaVariable.kt new file mode 100644 index 00000000000..65b7740e37d --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/lambdaVariable.kt @@ -0,0 +1,5 @@ +// WITH_RUNTIME +fun foo() { + val f = { "text" } + assert(true, f) +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/lambdaVariable.kt.after b/idea/testData/intentions/convertAssertToIf/lambdaVariable.kt.after new file mode 100644 index 00000000000..e42d35854b8 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/lambdaVariable.kt.after @@ -0,0 +1,7 @@ +// WITH_RUNTIME +fun foo() { + val f = { "text" } + if (!true) { + throw AssertionError(f()) + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/noMessage.kt b/idea/testData/intentions/convertAssertToIf/noMessage.kt new file mode 100644 index 00000000000..ae77fe1429c --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/noMessage.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo() { + assert(true) +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/noMessage.kt.after b/idea/testData/intentions/convertAssertToIf/noMessage.kt.after new file mode 100644 index 00000000000..6713445b89b --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/noMessage.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + if (!true) { + throw AssertionError("Assertion failed") + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/parenthesizedCondition.kt b/idea/testData/intentions/convertAssertToIf/parenthesizedCondition.kt new file mode 100644 index 00000000000..2fe0413f4c0 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/parenthesizedCondition.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo() { + assert((true && false), "text") +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/parenthesizedCondition.kt.after b/idea/testData/intentions/convertAssertToIf/parenthesizedCondition.kt.after new file mode 100644 index 00000000000..887d6df9ed0 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/parenthesizedCondition.kt.after @@ -0,0 +1,6 @@ +// WITH_RUNTIME +fun foo() { + if (!(true && false)) { + throw AssertionError("text") + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/simpleConvert.kt b/idea/testData/intentions/convertAssertToIf/simpleConvert.kt new file mode 100644 index 00000000000..cab30283641 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/simpleConvert.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo() { + assert(true, "text") +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/simpleConvert.kt.after b/idea/testData/intentions/convertAssertToIf/simpleConvert.kt.after new file mode 100644 index 00000000000..e91f674a0b9 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/simpleConvert.kt.after @@ -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/convertAssertToIf/stringVariable.kt b/idea/testData/intentions/convertAssertToIf/stringVariable.kt new file mode 100644 index 00000000000..13aae70c434 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/stringVariable.kt @@ -0,0 +1,5 @@ +// WITH_RUNTIME +fun foo() { + val f = "text" + assert(true, f) +} \ No newline at end of file diff --git a/idea/testData/intentions/convertAssertToIf/stringVariable.kt.after b/idea/testData/intentions/convertAssertToIf/stringVariable.kt.after new file mode 100644 index 00000000000..cb1b3cf9022 --- /dev/null +++ b/idea/testData/intentions/convertAssertToIf/stringVariable.kt.after @@ -0,0 +1,7 @@ +// WITH_RUNTIME +fun foo() { + val f = "text" + if (!true) { + throw AssertionError(f) + } +} \ 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 24666e4ccfb..f774c28ff45 100644 --- a/idea/tests/org/jetbrains/jet/plugin/intentions/AbstractCodeTransformationTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/intentions/AbstractCodeTransformationTest.java @@ -225,6 +225,10 @@ public abstract class AbstractCodeTransformationTest extends LightCodeInsightTes doTestIntention(path, new InsertExplicitTypeArguments()); } + public void doTestConvertAssertToIfWithThrowIntention(@NotNull String path) throws Exception { + doTestIntention(path, new ConvertAssertToIfWithThrowIntention()); + } + 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 ecb9ef564b6..00a32f62866 100644 --- a/idea/tests/org/jetbrains/jet/plugin/intentions/CodeTransformationTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/intentions/CodeTransformationTestGenerated.java @@ -30,7 +30,7 @@ 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.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}) +@InnerTestClasses({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}) public class CodeTransformationTestGenerated extends AbstractCodeTransformationTest { @TestMetadata("idea/testData/intentions/branched/elvisToIfThen") public static class ElvisToIfThen extends AbstractCodeTransformationTest { @@ -3510,6 +3510,99 @@ public class CodeTransformationTestGenerated extends AbstractCodeTransformationT } + @TestMetadata("idea/testData/intentions/convertAssertToIf") + public static class ConvertAssertToIf extends AbstractCodeTransformationTest { + public void testAllFilesPresentInConvertAssertToIf() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("idea/testData/intentions/convertAssertToIf"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("assertErrorOverloaded.kt") + public void testAssertErrorOverloaded() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/assertErrorOverloaded.kt"); + } + + @TestMetadata("booleanCondition.kt") + public void testBooleanCondition() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/booleanCondition.kt"); + } + + @TestMetadata("booleanConditionSimplified.kt") + public void testBooleanConditionSimplified() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/booleanConditionSimplified.kt"); + } + + @TestMetadata("booleanConditionSimplified2.kt") + public void testBooleanConditionSimplified2() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/booleanConditionSimplified2.kt"); + } + + @TestMetadata("booleanConditionWithVariables.kt") + public void testBooleanConditionWithVariables() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/booleanConditionWithVariables.kt"); + } + + @TestMetadata("functionCallCondition.kt") + public void testFunctionCallCondition() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/functionCallCondition.kt"); + } + + @TestMetadata("functionMessageInsideParentheses.kt") + public void testFunctionMessageInsideParentheses() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/functionMessageInsideParentheses.kt"); + } + + @TestMetadata("inapplicableAssertOverloaded.kt") + public void testInapplicableAssertOverloaded() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/inapplicableAssertOverloaded.kt"); + } + + @TestMetadata("inapplicableAssertOverloadedWithPackage.kt") + public void testInapplicableAssertOverloadedWithPackage() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/inapplicableAssertOverloadedWithPackage.kt"); + } + + @TestMetadata("inapplicableNoCondition.kt") + public void testInapplicableNoCondition() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/inapplicableNoCondition.kt"); + } + + @TestMetadata("lambdaMessageInsideParentheses.kt") + public void testLambdaMessageInsideParentheses() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/lambdaMessageInsideParentheses.kt"); + } + + @TestMetadata("lambdaMessageOutsideParentheses.kt") + public void testLambdaMessageOutsideParentheses() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/lambdaMessageOutsideParentheses.kt"); + } + + @TestMetadata("lambdaVariable.kt") + public void testLambdaVariable() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/lambdaVariable.kt"); + } + + @TestMetadata("noMessage.kt") + public void testNoMessage() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/noMessage.kt"); + } + + @TestMetadata("parenthesizedCondition.kt") + public void testParenthesizedCondition() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/parenthesizedCondition.kt"); + } + + @TestMetadata("simpleConvert.kt") + public void testSimpleConvert() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/simpleConvert.kt"); + } + + @TestMetadata("stringVariable.kt") + public void testStringVariable() throws Exception { + doTestConvertAssertToIfWithThrowIntention("idea/testData/intentions/convertAssertToIf/stringVariable.kt"); + } + + } + public static Test suite() { TestSuite suite = new TestSuite("CodeTransformationTestGenerated"); suite.addTestSuite(ElvisToIfThen.class); @@ -3562,6 +3655,7 @@ public class CodeTransformationTestGenerated extends AbstractCodeTransformationT suite.addTestSuite(SimplifyBooleanWithConstants.class); suite.addTestSuite(InsertExplicitTypeArguments.class); suite.addTestSuite(RemoveExplicitTypeArguments.class); + suite.addTestSuite(ConvertAssertToIf.class); return suite; } }