diff --git a/compiler/testData/codegen/box/functions/tailRecursion/insideElvis.kt b/compiler/testData/codegen/box/functions/tailRecursion/insideElvis.kt index 9c94e4bca87..bcc9bea5e99 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/insideElvis.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/insideElvis.kt @@ -1,8 +1,10 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + tailRecursive fun test(counter : Int, a : Any) : Int? { if (counter < 0) return null if (counter == 0) return 777 - return test(-1, "no tail") ?: test(-2, "no tail") ?: test(counter - 1, "tail") + return test(-1, "no tail") ?: test(-2, "no tail") ?: test(counter - 1, "tail") } fun box() : String = diff --git a/compiler/testData/codegen/box/functions/tailRecursion/labeledThisReferences.kt b/compiler/testData/codegen/box/functions/tailRecursion/labeledThisReferences.kt index 2558c0415bf..ecabc86be8e 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/labeledThisReferences.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/labeledThisReferences.kt @@ -1,3 +1,5 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + class B { inner class C { tailRecursive fun h(counter : Int, x : Any) { @@ -6,7 +8,7 @@ class B { } } - tailRecursive fun h2(x : Any) { + tailRecursive fun h2(x : Any) { this@B.h2("no recursion") // keep vigilance } diff --git a/compiler/testData/codegen/box/functions/tailRecursion/loops.kt b/compiler/testData/codegen/box/functions/tailRecursion/loops.kt index 3ab9bb226ea..76e7901ab4a 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/loops.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/loops.kt @@ -1,10 +1,12 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + tailRecursive fun test(x : Int, a : Any) : Int { var z = if (x > 3) 3 else x while (z > 0) { if (z > 10) { return test(x - 1, "tail") } - test(0, "no tail") + test(0, "no tail") z = z - 1 } diff --git a/compiler/testData/codegen/box/functions/tailRecursion/multilevelBlocks.kt b/compiler/testData/codegen/box/functions/tailRecursion/multilevelBlocks.kt index b6cc5acc69d..9c53f3b992d 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/multilevelBlocks.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/multilevelBlocks.kt @@ -1,10 +1,12 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + tailRecursive fun test(x : Int, a : Any) : Int { if (x == 1) { if (x != 1) { - test(0, "no tail") + test(0, "no tail") return test(0, "tail") } else { - return test(x + test(0, "no tail"), "tail") + return test(x + test(0, "no tail"), "tail") } } else if (x > 0) { return test(x - 1, "tail") diff --git a/compiler/testData/codegen/box/functions/tailRecursion/realStringRepeat.kt b/compiler/testData/codegen/box/functions/tailRecursion/realStringRepeat.kt index 98b6863ca21..d05e69d7f13 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/realStringRepeat.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/realStringRepeat.kt @@ -1,6 +1,6 @@ tailRecursive fun String.repeat(num : Int, acc : StringBuilder = StringBuilder()) : String = if (num == 0) acc.toString() - else repeat(num - 1, acc.append(this)!!) + else repeat(num - 1, acc.append(this)) fun box() : String { val s = "a".repeat(10000) diff --git a/compiler/testData/codegen/box/functions/tailRecursion/recursiveInnerFunction.kt b/compiler/testData/codegen/box/functions/tailRecursion/recursiveInnerFunction.kt index 56e67df8afe..56217109a22 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/recursiveInnerFunction.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/recursiveInnerFunction.kt @@ -1,3 +1,5 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + fun test() { [tailRecursive] fun g3(counter : Int, x : Any) { if (counter > 0) { g3(counter - 1, "tail") } diff --git a/compiler/testData/codegen/box/functions/tailRecursion/returnInCatch.kt b/compiler/testData/codegen/box/functions/tailRecursion/returnInCatch.kt index aa8a9764c35..95ad34901a7 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/returnInCatch.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/returnInCatch.kt @@ -1,10 +1,12 @@ -tailRecursive fun test(counter : Int, a : Any) : Int { +// !DIAGNOSTICS: -UNUSED_PARAMETER + +tailRecursive fun test(counter : Int, a : Any) : Int { if (counter == 0) return 0 try { throw Exception() } catch (e : Exception) { - return test(counter - 1, "no tail") + return test(counter - 1, "no tail") } } diff --git a/compiler/testData/codegen/box/functions/tailRecursion/returnInFinally.kt b/compiler/testData/codegen/box/functions/tailRecursion/returnInFinally.kt index b28b36f81b7..ff5b412d261 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/returnInFinally.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/returnInFinally.kt @@ -1,10 +1,12 @@ -tailRecursive fun test(counter : Int, a : Any) : Int { +// !DIAGNOSTICS: -UNUSED_PARAMETER + +tailRecursive fun test(counter : Int, a : Any) : Int { if (counter == 0) return 0 try { // do nothing } finally { - return test(counter - 1, "no tail") + return test(counter - 1, "no tail") } } diff --git a/compiler/testData/codegen/box/functions/tailRecursion/returnInIfInFinally.kt b/compiler/testData/codegen/box/functions/tailRecursion/returnInIfInFinally.kt index e1e49b367dc..b0101b8c7d2 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/returnInIfInFinally.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/returnInIfInFinally.kt @@ -1,11 +1,13 @@ -tailRecursive fun test(counter : Int, a : Any) : Int { +// !DIAGNOSTICS: -UNUSED_PARAMETER + +tailRecursive fun test(counter : Int, a : Any) : Int { if (counter == 0) return 0 try { // do nothing } finally { if (counter > 0) { - return test(counter - 1, "no tail") + return test(counter - 1, "no tail") } } diff --git a/compiler/testData/codegen/box/functions/tailRecursion/returnInTry.kt b/compiler/testData/codegen/box/functions/tailRecursion/returnInTry.kt index 51c726731e4..f0193f37710 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/returnInTry.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/returnInTry.kt @@ -1,8 +1,10 @@ -tailRecursive fun test(counter : Int, a : Any) : Int { +// !DIAGNOSTICS: -UNUSED_PARAMETER + +tailRecursive fun test(counter : Int, a : Any) : Int { if (counter == 0) return 0 try { - return test(counter - 1, "no tail") + return test(counter - 1, "no tail") } catch (any : Throwable) { return -1 } diff --git a/compiler/testData/codegen/box/functions/tailRecursion/simpleBlock.kt b/compiler/testData/codegen/box/functions/tailRecursion/simpleBlock.kt index 625d60e62a0..839cf9f342f 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/simpleBlock.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/simpleBlock.kt @@ -1,7 +1,9 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + tailRecursive fun test(x : Int, a : Any) : Int = if (x == 1) { - test(x - 1, "no tail") - 1 + test(x - 1, "no tail") + test(x - 1, "no tail") + 1 + test(x - 1, "no tail") } else if (x > 0) { test(x - 1, "tail") } else { diff --git a/compiler/testData/codegen/box/functions/tailRecursion/simpleReturn.kt b/compiler/testData/codegen/box/functions/tailRecursion/simpleReturn.kt index 5a758179b4f..98b635508b3 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/simpleReturn.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/simpleReturn.kt @@ -1,6 +1,8 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + tailRecursive fun test(x : Int, z : Any) : Int { if (x == 10) { - return 1 + test(x - 1, "no tail") + return 1 + test(x - 1, "no tail") } if (x > 0) { return test(x - 1, "tail") diff --git a/compiler/testData/codegen/box/functions/tailRecursion/simpleReturnWithElse.kt b/compiler/testData/codegen/box/functions/tailRecursion/simpleReturnWithElse.kt index f8cb053c359..6cd76f03112 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/simpleReturnWithElse.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/simpleReturnWithElse.kt @@ -1,9 +1,11 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + tailRecursive fun test(x : Int, a : Any) : Int { if (x == 0) { return 0 } else if (x == 10) { - test(0, "no tail") - return 1 + test(x - 1, "no tail") + test(0, "no tail") + return 1 + test(x - 1, "no tail") } else { return test(x - 1, "tail") } diff --git a/compiler/testData/codegen/box/functions/tailRecursion/thisReferences.kt b/compiler/testData/codegen/box/functions/tailRecursion/thisReferences.kt index 5fb31ea106d..102315ba347 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/thisReferences.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/thisReferences.kt @@ -1,3 +1,5 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + class A { tailRecursive fun f1(c : Int, x : Any) { if (c > 0) { @@ -11,8 +13,8 @@ class A { } } - tailRecursive fun f3(a : A, x : Any) { - a.f3(a, "no tail") // non-tail recursion, could be potentially resolved by condition if (a == this) f3() else a.f3() + tailRecursive fun f3(a : A, x : Any) { + a.f3(a, "no tail") // non-tail recursion, could be potentially resolved by condition if (a == this) f3() else a.f3() } } diff --git a/compiler/testData/codegen/box/functions/tailRecursion/unitBlocks.kt b/compiler/testData/codegen/box/functions/tailRecursion/unitBlocks.kt index d5555bc56c2..ee62445a75c 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/unitBlocks.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/unitBlocks.kt @@ -1,3 +1,5 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + tailRecursive fun test(x : Int, e : Any) : Unit { if (x == 1) { test(x - 1, "tail") @@ -5,7 +7,7 @@ tailRecursive fun test(x : Int, e : Any) : Unit { test(x - 1, "tail") return } else if (x == 3) { - test(x - 1, "no tail") + test(x - 1, "no tail") if (x == 3) { test(x - 1, "tail") } diff --git a/compiler/testData/codegen/box/functions/tailRecursion/whenWithCondition.kt b/compiler/testData/codegen/box/functions/tailRecursion/whenWithCondition.kt index 3dde2c475e8..ef8f610cf42 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/whenWithCondition.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/whenWithCondition.kt @@ -1,7 +1,9 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + tailRecursive fun withWhen(counter : Int, x : Any) : Int = when (counter) { 0 -> counter - 50 -> 1 + withWhen(counter - 1, "no tail") + 50 -> 1 + withWhen(counter - 1, "no tail") else -> withWhen(counter - 1, "tail") } diff --git a/compiler/testData/codegen/box/functions/tailRecursion/whenWithInRange.kt b/compiler/testData/codegen/box/functions/tailRecursion/whenWithInRange.kt index 8a03f684c80..dd4846cc3c2 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/whenWithInRange.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/whenWithInRange.kt @@ -1,9 +1,11 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + tailRecursive fun withWhen(counter : Int, d : Any, x : Any) : Int = when (counter) { 0 -> counter 1, 2 -> withWhen(counter - 1, "1,2", "tail") in 3..49 -> withWhen(counter - 1, "3..49", "tail") - 50 -> 1 + withWhen(counter - 1, "50", "no tail") + 50 -> 1 + withWhen(counter - 1, "50", "no tail") !in 0..50 -> withWhen(counter - 1, "!0..50", "tail") else -> withWhen(counter - 1, "else", "tail") } diff --git a/compiler/testData/codegen/box/functions/tailRecursion/whenWithIs.kt b/compiler/testData/codegen/box/functions/tailRecursion/whenWithIs.kt index 39f5cb3a69f..d98215bc61e 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/whenWithIs.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/whenWithIs.kt @@ -1,3 +1,5 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + tailRecursive fun withWhen(counter : Int, d : Any, x : Any) : Int = if (counter == 0) { 0 diff --git a/compiler/testData/codegen/box/functions/tailRecursion/whenWithoutCondition.kt b/compiler/testData/codegen/box/functions/tailRecursion/whenWithoutCondition.kt index 161d41c62e2..a129a017b98 100644 --- a/compiler/testData/codegen/box/functions/tailRecursion/whenWithoutCondition.kt +++ b/compiler/testData/codegen/box/functions/tailRecursion/whenWithoutCondition.kt @@ -1,8 +1,10 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + tailRecursive fun withWhen2(counter : Int, x : Any) : Int = when { counter == 0 -> counter - counter == 50 -> 1 + withWhen2(counter - 1, "no tail") - withWhen2(0, "no tail") == 0 -> withWhen2(counter - 1, "tail") + counter == 50 -> 1 + withWhen2(counter - 1, "no tail") + withWhen2(0, "no tail") == 0 -> withWhen2(counter - 1, "tail") else -> 1 } diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index 559a355cd04..07e30c1b431 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -30,7 +30,7 @@ import org.jetbrains.jet.checkers.AbstractDiagnosticsTestWithEagerResolve; /** This class is generated by {@link org.jetbrains.jet.generators.tests.GenerateTests}. DO NOT MODIFY MANUALLY */ @SuppressWarnings("all") -@InnerTestClasses({JetDiagnosticsTestGenerated.Tests.class, JetDiagnosticsTestGenerated.Script.class}) +@InnerTestClasses({JetDiagnosticsTestGenerated.Tests.class, JetDiagnosticsTestGenerated.Script.class, JetDiagnosticsTestGenerated.TailRecursion.class}) public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEagerResolve { @TestMetadata("compiler/testData/diagnostics/tests") @InnerTestClasses({Tests.Annotations.class, Tests.BackingField.class, Tests.CallableReference.class, Tests.Cast.class, Tests.CheckArguments.class, Tests.ClassObjects.class, Tests.ControlFlowAnalysis.class, Tests.ControlStructures.class, Tests.DataClasses.class, Tests.DataFlow.class, Tests.DataFlowInfoTraversal.class, Tests.DeclarationChecks.class, Tests.DelegatedProperty.class, Tests.Deparenthesize.class, Tests.Enum.class, Tests.Evaluate.class, Tests.Extensions.class, Tests.FunctionLiterals.class, Tests.Generics.class, Tests.IncompleteCode.class, Tests.Inference.class, Tests.Infos.class, Tests.Inline.class, Tests.Inner.class, Tests.J_k.class, Tests.Jdk_annotations.class, Tests.Library.class, Tests.NullabilityAndAutoCasts.class, Tests.NullableTypes.class, Tests.Numbers.class, Tests.Objects.class, Tests.OperatorsOverloading.class, Tests.Overload.class, Tests.Override.class, Tests.Recovery.class, Tests.Redeclarations.class, Tests.Regressions.class, Tests.Resolve.class, Tests.Scopes.class, Tests.SenselessComparison.class, Tests.Shadowing.class, Tests.SmartCasts.class, Tests.Substitutions.class, Tests.Subtyping.class, Tests.Suppress.class, Tests.TailCalls.class, Tests.ThisAndSuper.class, Tests.Varargs.class, Tests.When.class}) @@ -6787,10 +6787,139 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage } + @TestMetadata("compiler/testData/codegen/box/functions/tailRecursion") + public static class TailRecursion extends AbstractDiagnosticsTestWithEagerResolve { + public void testAllFilesPresentInTailRecursion() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/codegen/box/functions/tailRecursion"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("defaultArgs.kt") + public void testDefaultArgs() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/defaultArgs.kt"); + } + + @TestMetadata("infixCall.kt") + public void testInfixCall() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/infixCall.kt"); + } + + @TestMetadata("insideElvis.kt") + public void testInsideElvis() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/insideElvis.kt"); + } + + @TestMetadata("labeledThisReferences.kt") + public void testLabeledThisReferences() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/labeledThisReferences.kt"); + } + + @TestMetadata("loops.kt") + public void testLoops() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/loops.kt"); + } + + @TestMetadata("multilevelBlocks.kt") + public void testMultilevelBlocks() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/multilevelBlocks.kt"); + } + + @TestMetadata("realIteratorFoldl.kt") + public void testRealIteratorFoldl() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/realIteratorFoldl.kt"); + } + + @TestMetadata("realStringEscape.kt") + public void testRealStringEscape() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/realStringEscape.kt"); + } + + @TestMetadata("realStringRepeat.kt") + public void testRealStringRepeat() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/realStringRepeat.kt"); + } + + @TestMetadata("recursiveInnerFunction.kt") + public void testRecursiveInnerFunction() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/recursiveInnerFunction.kt"); + } + + @TestMetadata("returnIf.kt") + public void testReturnIf() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/returnIf.kt"); + } + + @TestMetadata("returnInCatch.kt") + public void testReturnInCatch() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/returnInCatch.kt"); + } + + @TestMetadata("returnInFinally.kt") + public void testReturnInFinally() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/returnInFinally.kt"); + } + + @TestMetadata("returnInIfInFinally.kt") + public void testReturnInIfInFinally() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/returnInIfInFinally.kt"); + } + + @TestMetadata("returnInTry.kt") + public void testReturnInTry() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/returnInTry.kt"); + } + + @TestMetadata("simpleBlock.kt") + public void testSimpleBlock() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/simpleBlock.kt"); + } + + @TestMetadata("simpleReturn.kt") + public void testSimpleReturn() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/simpleReturn.kt"); + } + + @TestMetadata("simpleReturnWithElse.kt") + public void testSimpleReturnWithElse() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/simpleReturnWithElse.kt"); + } + + @TestMetadata("thisReferences.kt") + public void testThisReferences() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/thisReferences.kt"); + } + + @TestMetadata("unitBlocks.kt") + public void testUnitBlocks() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/unitBlocks.kt"); + } + + @TestMetadata("whenWithCondition.kt") + public void testWhenWithCondition() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/whenWithCondition.kt"); + } + + @TestMetadata("whenWithInRange.kt") + public void testWhenWithInRange() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/whenWithInRange.kt"); + } + + @TestMetadata("whenWithIs.kt") + public void testWhenWithIs() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/whenWithIs.kt"); + } + + @TestMetadata("whenWithoutCondition.kt") + public void testWhenWithoutCondition() throws Exception { + doTest("compiler/testData/codegen/box/functions/tailRecursion/whenWithoutCondition.kt"); + } + + } + public static Test suite() { TestSuite suite = new TestSuite("JetDiagnosticsTestGenerated"); suite.addTest(Tests.innerSuite()); suite.addTestSuite(Script.class); + suite.addTestSuite(TailRecursion.class); return suite; } } diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestFiles.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestFiles.java index 9ecd5811285..7e51aa6e629 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestFiles.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestFiles.java @@ -22,6 +22,7 @@ import com.intellij.openapi.util.Pair; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.JetTestCaseBuilder; import org.jetbrains.jet.JetTestUtils; +import org.jetbrains.jet.checkers.CheckerTestUtil; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; import org.jetbrains.jet.lang.resolve.name.Name; @@ -99,7 +100,8 @@ public class CodegenTestFiles { } @NotNull - public static CodegenTestFiles create(@NotNull String fileName, @NotNull String content, @NotNull Project project) { + public static CodegenTestFiles create(@NotNull String fileName, @NotNull String contentWithDiagnosticMarkup, @NotNull Project project) { + String content = CheckerTestUtil.parseDiagnosedRanges(contentWithDiagnosticMarkup, new ArrayList()); JetFile file = JetTestUtils.createFile(fileName, content, project); List> expectedValues = Lists.newArrayList(); diff --git a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.java b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.java index 90ba06fd64b..d486a14e7d8 100644 --- a/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.java +++ b/generators/src/org/jetbrains/jet/generators/tests/GenerateTests.java @@ -22,7 +22,6 @@ import org.jetbrains.jet.cfg.AbstractControlFlowTest; import org.jetbrains.jet.checkers.AbstractDiagnosticsTestWithEagerResolve; import org.jetbrains.jet.checkers.AbstractJetJsCheckerTest; import org.jetbrains.jet.checkers.AbstractJetPsiCheckerTest; -import org.jetbrains.jet.checkers.AbstractTailRecursionTest; import org.jetbrains.jet.cli.AbstractKotlincExecutableTest; import org.jetbrains.jet.codegen.AbstractBytecodeTextTest; import org.jetbrains.jet.codegen.AbstractCheckLocalVariablesTableTest; @@ -98,7 +97,8 @@ public class GenerateTests { "JetDiagnosticsTestGenerated", AbstractDiagnosticsTestWithEagerResolve.class, testModel("compiler/testData/diagnostics/tests"), - testModel("compiler/testData/diagnostics/tests/script", true, "ktscript", "doTest") + testModel("compiler/testData/diagnostics/tests/script", true, "ktscript", "doTest"), + testModel("compiler/testData/codegen/box/functions/tailRecursion") ); generateTest( @@ -221,13 +221,6 @@ public class GenerateTests { testModel("compiler/testData/renderer") ); - generateTest( - "compiler/tests", - "TailRecursionDetectorTestGenerated", - AbstractTailRecursionTest.class, - testModel("compiler/testData/codegen/box/functions/tailRecursion") - ); - generateTest("compiler/tests", "LazyResolveTestGenerated", AbstractLazyResolveTest.class,