Compare commits

...

2 Commits

Author SHA1 Message Date
Alexey Tsvetkov
17917895a8 Don't specify TargetBackend for IC JVM tests
TargetBackend does not seem to be useful for IC tests,
but it prevents tests from being muted trough mute-*.csv
2020-04-16 14:13:46 +03:00
Alexey Tsvetkov
8b2f71e954 Add test for KT-38152
The test fails with the JVM compiler, because the compiler tries to read
a class file for a lambda from a dirty file. Since IC/JPS deletes
outputs for dirty source files files before the compilation,
the compiler fails with exception.
2020-04-15 12:40:40 +03:00
17 changed files with 502 additions and 406 deletions

View File

@@ -300,6 +300,11 @@ public class IncrementalJsCompilerRunnerTestGenerated extends AbstractIncrementa
runTest("jps-plugin/testData/incremental/pureKotlin/inlineSuspendFunctionChanged/");
}
@TestMetadata("inlineTransitiveLambda")
public void testInlineTransitiveLambda() throws Exception {
runTest("jps-plugin/testData/incremental/pureKotlin/inlineTransitiveLambda/");
}
@TestMetadata("inlineTwoFunctionsOneChanged")
public void testInlineTwoFunctionsOneChanged() throws Exception {
runTest("jps-plugin/testData/incremental/pureKotlin/inlineTwoFunctionsOneChanged/");

View File

@@ -300,6 +300,11 @@ public class IncrementalJsCompilerRunnerWithMetadataOnlyTestGenerated extends Ab
runTest("jps-plugin/testData/incremental/pureKotlin/inlineSuspendFunctionChanged/");
}
@TestMetadata("inlineTransitiveLambda")
public void testInlineTransitiveLambda() throws Exception {
runTest("jps-plugin/testData/incremental/pureKotlin/inlineTransitiveLambda/");
}
@TestMetadata("inlineTwoFunctionsOneChanged")
public void testInlineTwoFunctionsOneChanged() throws Exception {
runTest("jps-plugin/testData/incremental/pureKotlin/inlineTwoFunctionsOneChanged/");

View File

@@ -302,6 +302,11 @@ public class IncrementalJsKlibCompilerRunnerTestGenerated extends AbstractIncrem
runTest("jps-plugin/testData/incremental/pureKotlin/inlineSuspendFunctionChanged/");
}
@TestMetadata("inlineTransitiveLambda")
public void testInlineTransitiveLambda() throws Exception {
runTest("jps-plugin/testData/incremental/pureKotlin/inlineTransitiveLambda/");
}
@TestMetadata("inlineTwoFunctionsOneChanged")
public void testInlineTwoFunctionsOneChanged() throws Exception {
runTest("jps-plugin/testData/incremental/pureKotlin/inlineTwoFunctionsOneChanged/");

View File

@@ -300,6 +300,11 @@ public class IncrementalJsKlibCompilerWithScopeExpansionRunnerTestGenerated exte
runTest("jps-plugin/testData/incremental/pureKotlin/inlineSuspendFunctionChanged/");
}
@TestMetadata("inlineTransitiveLambda")
public void testInlineTransitiveLambda() throws Exception {
runTest("jps-plugin/testData/incremental/pureKotlin/inlineTransitiveLambda/");
}
@TestMetadata("inlineTwoFunctionsOneChanged")
public void testInlineTwoFunctionsOneChanged() throws Exception {
runTest("jps-plugin/testData/incremental/pureKotlin/inlineTwoFunctionsOneChanged/");

View File

@@ -1251,15 +1251,15 @@ fun main(args: Array<String>) {
}
testGroup("compiler/incremental-compilation-impl/test", "jps-plugin/testData") {
fun incrementalJvmTestData(targetBackend: TargetBackend): TestGroup.TestClass.() -> Unit = {
model("incremental/pureKotlin", extension = null, recursive = false, targetBackend = targetBackend)
model("incremental/classHierarchyAffected", extension = null, recursive = false, targetBackend = targetBackend)
model("incremental/inlineFunCallSite", extension = null, excludeParentDirs = true, targetBackend = targetBackend)
model("incremental/withJava", extension = null, excludeParentDirs = true, targetBackend = targetBackend)
model("incremental/incrementalJvmCompilerOnly", extension = null, excludeParentDirs = true, targetBackend = targetBackend)
fun incrementalJvmTestData(): TestGroup.TestClass.() -> Unit = {
model("incremental/pureKotlin", extension = null, recursive = false)
model("incremental/classHierarchyAffected", extension = null, recursive = false)
model("incremental/inlineFunCallSite", extension = null, excludeParentDirs = true)
model("incremental/withJava", extension = null, excludeParentDirs = true)
model("incremental/incrementalJvmCompilerOnly", extension = null, excludeParentDirs = true)
}
testClass<AbstractIncrementalJvmCompilerRunnerTest>(init = incrementalJvmTestData(TargetBackend.JVM))
testClass<AbstractIrIncrementalJvmCompilerRunnerTest>(init = incrementalJvmTestData(TargetBackend.JVM_IR))
testClass<AbstractIncrementalJvmCompilerRunnerTest>(init = incrementalJvmTestData())
testClass<AbstractIrIncrementalJvmCompilerRunnerTest>(init = incrementalJvmTestData())
testClass<AbstractIncrementalJsCompilerRunnerTest> {
model("incremental/pureKotlin", extension = null, recursive = false)

View File

@@ -951,6 +951,11 @@ public class IncrementalJvmJpsTestGenerated extends AbstractIncrementalJvmJpsTes
runTest("jps-plugin/testData/incremental/pureKotlin/inlineSuspendFunctionChanged/");
}
@TestMetadata("inlineTransitiveLambda")
public void testInlineTransitiveLambda() throws Exception {
runTest("jps-plugin/testData/incremental/pureKotlin/inlineTransitiveLambda/");
}
@TestMetadata("inlineTwoFunctionsOneChanged")
public void testInlineTwoFunctionsOneChanged() throws Exception {
runTest("jps-plugin/testData/incremental/pureKotlin/inlineTwoFunctionsOneChanged/");

View File

@@ -0,0 +1,38 @@
================ Step #1 =================
Cleaning output files:
out/production/module/InlineFun1Kt$inlineFun1$1.class
out/production/module/InlineFun1Kt.class
out/production/module/META-INF/module.kotlin_module
out/production/module/UseInlineFun2Kt$useInlineFun2$$inlined$inlineFun2$1.class
out/production/module/UseInlineFun2Kt.class
End of files
Compiling files:
src/inlineFun1.kt
src/useInlineFun2.kt
End of files
Marked as dirty by Kotlin:
src/inlineFun2.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/InlineFun2Kt.class
End of files
Compiling files:
src/inlineFun2.kt
End of files
Marked as dirty by Kotlin:
src/useInlineFun2.kt
Exit code: ADDITIONAL_PASS_REQUIRED
------------------------------------------
Cleaning output files:
out/production/module/META-INF/module.kotlin_module
out/production/module/UseInlineFun2Kt$useInlineFun2$$inlined$inlineFun2$1.class
out/production/module/UseInlineFun2Kt.class
End of files
Compiling files:
src/useInlineFun2.kt
End of files
Exit code: OK
------------------------------------------

View File

@@ -0,0 +1 @@
fun dummy() {}

View File

@@ -0,0 +1,3 @@
inline fun inlineFun1(crossinline fn:() -> Int): Int {
return { fn() }()
}

View File

@@ -0,0 +1,3 @@
inline fun inlineFun1(crossinline fn:() -> Int): Int {
return { fn() * fn() }()
}

View File

@@ -0,0 +1,3 @@
inline fun inlineFun2(crossinline fn: () -> Int): Int {
return inlineFun1(fn)
}

View File

@@ -0,0 +1,8 @@
================ Step #1 =================
Compiling files:
src/inlineFun1.kt
src/useInlineFun2.kt
End of files
Exit code: OK

View File

@@ -0,0 +1,2 @@
fun useInlineFun2() =
inlineFun2 { 10 }

View File

@@ -0,0 +1,2 @@
fun useInlineFun2() =
inlineFun2 { 100 }

View File

@@ -63,3 +63,6 @@ org.jetbrains.kotlin.idea.debugger.test.AsyncStackTraceTestGenerated.testAsyncLa
org.jetbrains.kotlin.idea.debugger.test.AsyncStackTraceTestGenerated.testAsyncSimple, redesign test AsyncStackTraces
org.jetbrains.kotlin.idea.debugger.test.KotlinSteppingTestGenerated.StepOver.testStepOverInlinedLambdaStdlib, fails after advancing bootstrap KT-37879
org.jetbrains.kotlin.incremental.IncrementalJsKlibCompilerRunnerTestGenerated.ClassHierarchyAffected.testMethodRemoved, FO in klib required
org.jetbrains.kotlin.jps.build.IncrementalJvmJpsTestGenerated.PureKotlin.testInlineTransitiveLambda, KT-38152
org.jetbrains.kotlin.incremental.IncrementalJvmCompilerRunnerTestGenerated.PureKotlin.testInlineTransitiveLambda, KT-38152
org.jetbrains.kotlin.incremental.IrIncrementalJvmCompilerRunnerTestGenerated.PureKotlin.testInlineTransitiveLambda, KT-38152
Can't render this file because it contains an unexpected character in line 12 and column 132.