Xjdk-release: support mixed compilation of Java and Kotlin

#KT-52815 Fixed
This commit is contained in:
Mikhael Bogdanov
2022-11-10 09:48:30 +01:00
committed by Space Team
parent 9bd17f628d
commit edc54524aa
20 changed files with 537 additions and 0 deletions
@@ -8,6 +8,7 @@ import com.intellij.DynamicBundle
import com.intellij.codeInsight.ContainerProvider
import com.intellij.codeInsight.runner.JavaMainMethodProvider
import com.intellij.core.JavaCoreApplicationEnvironment
import com.intellij.ide.highlighter.JavaClassFileType
import com.intellij.lang.MetaLanguage
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationManager
@@ -26,6 +27,10 @@ class KotlinCoreApplicationEnvironment private constructor(
) :
JavaCoreApplicationEnvironment(parentDisposable, unitTestMode) {
init {
registerFileType(JavaClassFileType.INSTANCE, "sig");
}
override fun createJrtFileSystem(): VirtualFileSystem {
return CoreJrtFileSystem()
}
@@ -5,6 +5,9 @@
package org.jetbrains.kotlin.cli.jvm.modules
import com.intellij.ide.highlighter.JavaClassFileType
import com.intellij.openapi.fileTypes.FileType
import com.intellij.openapi.fileTypes.FileTypeRegistry
import com.intellij.openapi.vfs.VirtualFile
import java.io.InputStream
@@ -39,4 +42,8 @@ class CtSymClassVirtualFile(
override fun refresh(p0: Boolean, p1: Boolean, p2: Runnable?) = file.refresh(p0, p1, p2)
override fun getInputStream(): InputStream? = file.inputStream
override fun getFileType(): FileType = JavaClassFileType.INSTANCE
override fun getModificationStamp(): Long = file.modificationStamp
}
@@ -278,6 +278,46 @@ public class FirBlackBoxModernJdkCodegenTestGenerated extends AbstractFirBlackBo
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/reflective/reflective_9.kt");
}
}
@Nested
@TestMetadata("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava")
@TestDataPath("$PROJECT_ROOT")
public class WithJava {
@Test
public void testAllFilesPresentInWithJava() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("withJava_10.kt")
public void testWithJava_10() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_10.kt");
}
@Test
@TestMetadata("withJava_11.kt")
public void testWithJava_11() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_11.kt");
}
@Test
@TestMetadata("withJava_6.kt")
public void testWithJava_6() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_6.kt");
}
@Test
@TestMetadata("withJava_8.kt")
public void testWithJava_8() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_8.kt");
}
@Test
@TestMetadata("withJava_9.kt")
public void testWithJava_9() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_9.kt");
}
}
}
}
@@ -591,6 +631,76 @@ public class FirBlackBoxModernJdkCodegenTestGenerated extends AbstractFirBlackBo
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/innerClass/threadState_9.kt");
}
}
@Nested
@TestMetadata("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava")
@TestDataPath("$PROJECT_ROOT")
public class WithJava {
@Test
public void testAllFilesPresentInWithJava() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("withJava_10.kt")
public void testWithJava_10() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_10.kt");
}
@Test
@TestMetadata("withJava_11.kt")
public void testWithJava_11() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_11.kt");
}
@Test
@TestMetadata("withJava_12.kt")
public void testWithJava_12() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_12.kt");
}
@Test
@TestMetadata("withJava_13.kt")
public void testWithJava_13() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_13.kt");
}
@Test
@TestMetadata("withJava_14.kt")
public void testWithJava_14() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_14.kt");
}
@Test
@TestMetadata("withJava_15.kt")
public void testWithJava_15() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_15.kt");
}
@Test
@TestMetadata("withJava_16.kt")
public void testWithJava_16() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_16.kt");
}
@Test
@TestMetadata("withJava_17.kt")
public void testWithJava_17() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_17.kt");
}
@Test
@TestMetadata("withJava_8.kt")
public void testWithJava_8() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_8.kt");
}
@Test
@TestMetadata("withJava_9.kt")
public void testWithJava_9() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_9.kt");
}
}
}
@Nested
@@ -0,0 +1,13 @@
// JDK_RELEASE: 10
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 11
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 6
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 8
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 9
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 10
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 11
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 12
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 13
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 14
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 15
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 16
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 17
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 8
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -0,0 +1,13 @@
// JDK_RELEASE: 9
// FILE: Example.java
public class Example {
public static final String MESSAGE = "OK";
}
// FILE: Kotlin.kt
fun box(): String {
return Example.MESSAGE
}
@@ -260,6 +260,46 @@ public class BlackBoxModernJdkCodegenTestGenerated extends AbstractBlackBoxCodeg
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/reflective/reflective_9.kt");
}
}
@Nested
@TestMetadata("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava")
@TestDataPath("$PROJECT_ROOT")
public class WithJava {
@Test
public void testAllFilesPresentInWithJava() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
}
@Test
@TestMetadata("withJava_10.kt")
public void testWithJava_10() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_10.kt");
}
@Test
@TestMetadata("withJava_11.kt")
public void testWithJava_11() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_11.kt");
}
@Test
@TestMetadata("withJava_6.kt")
public void testWithJava_6() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_6.kt");
}
@Test
@TestMetadata("withJava_8.kt")
public void testWithJava_8() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_8.kt");
}
@Test
@TestMetadata("withJava_9.kt")
public void testWithJava_9() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_9.kt");
}
}
}
}
@@ -573,6 +613,76 @@ public class BlackBoxModernJdkCodegenTestGenerated extends AbstractBlackBoxCodeg
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/innerClass/threadState_9.kt");
}
}
@Nested
@TestMetadata("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava")
@TestDataPath("$PROJECT_ROOT")
public class WithJava {
@Test
public void testAllFilesPresentInWithJava() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
}
@Test
@TestMetadata("withJava_10.kt")
public void testWithJava_10() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_10.kt");
}
@Test
@TestMetadata("withJava_11.kt")
public void testWithJava_11() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_11.kt");
}
@Test
@TestMetadata("withJava_12.kt")
public void testWithJava_12() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_12.kt");
}
@Test
@TestMetadata("withJava_13.kt")
public void testWithJava_13() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_13.kt");
}
@Test
@TestMetadata("withJava_14.kt")
public void testWithJava_14() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_14.kt");
}
@Test
@TestMetadata("withJava_15.kt")
public void testWithJava_15() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_15.kt");
}
@Test
@TestMetadata("withJava_16.kt")
public void testWithJava_16() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_16.kt");
}
@Test
@TestMetadata("withJava_17.kt")
public void testWithJava_17() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_17.kt");
}
@Test
@TestMetadata("withJava_8.kt")
public void testWithJava_8() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_8.kt");
}
@Test
@TestMetadata("withJava_9.kt")
public void testWithJava_9() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_9.kt");
}
}
}
@Nested
@@ -278,6 +278,46 @@ public class IrBlackBoxModernJdkCodegenTestGenerated extends AbstractIrBlackBoxC
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/reflective/reflective_9.kt");
}
}
@Nested
@TestMetadata("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava")
@TestDataPath("$PROJECT_ROOT")
public class WithJava {
@Test
public void testAllFilesPresentInWithJava() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("withJava_10.kt")
public void testWithJava_10() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_10.kt");
}
@Test
@TestMetadata("withJava_11.kt")
public void testWithJava_11() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_11.kt");
}
@Test
@TestMetadata("withJava_6.kt")
public void testWithJava_6() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_6.kt");
}
@Test
@TestMetadata("withJava_8.kt")
public void testWithJava_8() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_8.kt");
}
@Test
@TestMetadata("withJava_9.kt")
public void testWithJava_9() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava11/releaseFlag/withJava/withJava_9.kt");
}
}
}
}
@@ -591,6 +631,76 @@ public class IrBlackBoxModernJdkCodegenTestGenerated extends AbstractIrBlackBoxC
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/innerClass/threadState_9.kt");
}
}
@Nested
@TestMetadata("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava")
@TestDataPath("$PROJECT_ROOT")
public class WithJava {
@Test
public void testAllFilesPresentInWithJava() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@Test
@TestMetadata("withJava_10.kt")
public void testWithJava_10() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_10.kt");
}
@Test
@TestMetadata("withJava_11.kt")
public void testWithJava_11() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_11.kt");
}
@Test
@TestMetadata("withJava_12.kt")
public void testWithJava_12() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_12.kt");
}
@Test
@TestMetadata("withJava_13.kt")
public void testWithJava_13() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_13.kt");
}
@Test
@TestMetadata("withJava_14.kt")
public void testWithJava_14() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_14.kt");
}
@Test
@TestMetadata("withJava_15.kt")
public void testWithJava_15() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_15.kt");
}
@Test
@TestMetadata("withJava_16.kt")
public void testWithJava_16() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_16.kt");
}
@Test
@TestMetadata("withJava_17.kt")
public void testWithJava_17() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_17.kt");
}
@Test
@TestMetadata("withJava_8.kt")
public void testWithJava_8() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_8.kt");
}
@Test
@TestMetadata("withJava_9.kt")
public void testWithJava_9() throws Exception {
runTest("compiler/testData/codegen/boxModernJdk/testsWithJava17/releaseFlag/withJava/withJava_9.kt");
}
}
}
@Nested