From fc519b23399f2df4d8b06745b58e5d1e4f6cf424 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Thu, 4 Jan 2024 23:23:28 +0100 Subject: [PATCH] [SLC] add test on multiplatform facade ^KT-64714 --- .../AbstractSymbolLightClassesByFqNameTest.kt | 2 +- .../AbstractSymbolLightClassesTestBase.kt | 20 ++- ...ClassesByFqNameForSourceTestGenerated.java | 18 +++ ...qualityByFqNameForSourceTestGenerated.java | 18 +++ ...rentingByFqNameForSourceTestGenerated.java | 18 +++ ...MultiplatformCommonFacade.descriptors.java | 57 ++++++++ .../MultiplatformCommonFacade.java | 22 +++ .../MultiplatformCommonFacade.kt | 138 ++++++++++++++++++ ...latformIntermediateFacade.descriptors.java | 57 ++++++++ .../MultiplatformIntermediateFacade.java | 22 +++ .../MultiplatformIntermediateFacade.kt | 138 ++++++++++++++++++ .../MultiplatformJvmFacade.descriptors.java | 57 ++++++++ .../MultiplatformJvmFacade.java | 29 ++++ .../MultiplatformJvmFacade.kt | 138 ++++++++++++++++++ .../CompilerLightClassTestGenerated.java | 15 ++ 15 files changed, 744 insertions(+), 5 deletions(-) create mode 100644 compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.descriptors.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.kt create mode 100644 compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.descriptors.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.kt create mode 100644 compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.descriptors.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.java create mode 100644 compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.kt diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesByFqNameTest.kt b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesByFqNameTest.kt index 285181597e8..a99faf121fd 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesByFqNameTest.kt +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesByFqNameTest.kt @@ -23,7 +23,7 @@ abstract class AbstractSymbolLightClassesByFqNameTest( override fun getRenderResult(ktFile: KtFile, ktFiles: List, testDataFile: Path, module: TestModule, project: Project): String { return LightClassTestCommon.getActualLightClassText( testDataFile.toFile(), - { fqName -> findLightClass(fqName, project) }, + { fqName -> findLightClass(fqName, ktFile) }, LightClassTestCommon::removeEmptyDefaultImpls, if (isTestAgainstCompiledCode) MembersFilterForCompiledClasses else PsiClassRenderer.MembersFilter.DEFAULT, ) diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesTestBase.kt b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesTestBase.kt index 897059b2ac2..4e71f709f51 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesTestBase.kt +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/base/AbstractSymbolLightClassesTestBase.kt @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.assertions import org.jetbrains.kotlin.test.services.service import org.jetbrains.kotlin.test.utils.FirIdenticalCheckerHelper +import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty import org.jetbrains.kotlin.utils.addToStdlib.safeAs import java.io.File import java.nio.file.Path @@ -61,7 +62,10 @@ abstract class AbstractSymbolLightClassesTestBase( } override fun doTestByModuleStructure(moduleStructure: TestModuleStructure, testServices: TestServices) { - val lastModule = moduleStructure.modules.last() + val lastModule = with(moduleStructure.modules) { + find { it.name.substringBefore('-') == "main" } ?: last() + } + val ktFiles = testServices.ktModuleProvider.getModuleFiles(lastModule).filterIsInstance() doTestByFileStructure(ktFiles, lastModule, testServices) } @@ -140,13 +144,21 @@ abstract class AbstractSymbolLightClassesTestBase( error("Test is passing. Please, remove `// ${directive.name}` directive") } + protected fun findLightClass(fqname: String, ktFile: KtFile): PsiClass? { + val project = ktFile.project + return findLightClass(fqname, GlobalSearchScope.fileScope(ktFile), project) ?: findLightClass(fqname, project) + } + protected fun findLightClass(fqname: String, project: Project): PsiClass? { - val searchScope = GlobalSearchScope.allScope(project) - JavaElementFinder.getInstance(project).findClass(fqname, searchScope)?.let { return it } + return findLightClass(fqname, GlobalSearchScope.allScope(project), project) + } + + private fun findLightClass(fqname: String, scope: GlobalSearchScope, project: Project): PsiClass? { + JavaElementFinder.getInstance(project).findClass(fqname, scope)?.let { return it } val fqName = FqName(fqname) val parentFqName = fqName.parent().takeUnless(FqName::isRoot) ?: return null - val enumClass = JavaElementFinder.getInstance(project).findClass(parentFqName.asString(), searchScope) ?: return null + val enumClass = JavaElementFinder.getInstance(project).findClass(parentFqName.asString(), scope) ?: return null val kotlinEnumClass = enumClass.unwrapped?.safeAs()?.takeIf(KtClass::isEnum) ?: return null val enumEntryName = fqName.shortName().asString() diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByFqNameForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByFqNameForSourceTestGenerated.java index 3319f197a2f..b5f45281634 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByFqNameForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesByFqNameForSourceTestGenerated.java @@ -429,6 +429,24 @@ public class SymbolLightClassesByFqNameForSourceTestGenerated extends AbstractSy runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/LocalInAnnotation.kt"); } + @Test + @TestMetadata("MultiplatformCommonFacade.kt") + public void testMultiplatformCommonFacade() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.kt"); + } + + @Test + @TestMetadata("MultiplatformIntermediateFacade.kt") + public void testMultiplatformIntermediateFacade() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.kt"); + } + + @Test + @TestMetadata("MultiplatformJvmFacade.kt") + public void testMultiplatformJvmFacade() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.kt"); + } + @Test @TestMetadata("PrivateInTrait.kt") public void testPrivateInTrait() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByFqNameForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByFqNameForSourceTestGenerated.java index 4f6451d8597..249097d267c 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByFqNameForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesEqualityByFqNameForSourceTestGenerated.java @@ -429,6 +429,24 @@ public class SymbolLightClassesEqualityByFqNameForSourceTestGenerated extends Ab runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/LocalInAnnotation.kt"); } + @Test + @TestMetadata("MultiplatformCommonFacade.kt") + public void testMultiplatformCommonFacade() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.kt"); + } + + @Test + @TestMetadata("MultiplatformIntermediateFacade.kt") + public void testMultiplatformIntermediateFacade() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.kt"); + } + + @Test + @TestMetadata("MultiplatformJvmFacade.kt") + public void testMultiplatformJvmFacade() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.kt"); + } + @Test @TestMetadata("PrivateInTrait.kt") public void testPrivateInTrait() throws Exception { diff --git a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByFqNameForSourceTestGenerated.java b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByFqNameForSourceTestGenerated.java index 7c7079acf35..fd748fbaa12 100644 --- a/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByFqNameForSourceTestGenerated.java +++ b/analysis/symbol-light-classes/tests/org/jetbrains/kotlin/light/classes/symbol/source/SymbolLightClassesParentingByFqNameForSourceTestGenerated.java @@ -429,6 +429,24 @@ public class SymbolLightClassesParentingByFqNameForSourceTestGenerated extends A runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/LocalInAnnotation.kt"); } + @Test + @TestMetadata("MultiplatformCommonFacade.kt") + public void testMultiplatformCommonFacade() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.kt"); + } + + @Test + @TestMetadata("MultiplatformIntermediateFacade.kt") + public void testMultiplatformIntermediateFacade() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.kt"); + } + + @Test + @TestMetadata("MultiplatformJvmFacade.kt") + public void testMultiplatformJvmFacade() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.kt"); + } + @Test @TestMetadata("PrivateInTrait.kt") public void testPrivateInTrait() throws Exception { diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.descriptors.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.descriptors.java new file mode 100644 index 00000000000..2d9f9c7bc74 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.descriptors.java @@ -0,0 +1,57 @@ +public final class MyFacadeKt /* mypack.MyFacadeKt*/ { + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getCommonVariable1();// getCommonVariable1() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getCommonVariable2();// getCommonVariable2() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getCommonVariableWithActualization();// getCommonVariableWithActualization() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getIntermediateVariable1();// getIntermediateVariable1() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getIntermediateVariable2();// getIntermediateVariable2() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getIntermediateVariableWithActualization();// getIntermediateVariableWithActualization() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getJvmVariable1();// getJvmVariable1() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getJvmVariable2();// getJvmVariable2() + + public static final void commonFunction1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass);// commonFunction1(mypack.MyJvmClass, mypack.MyCommonClass) + + public static final void commonFunction2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass);// commonFunction2(mypack.MyJvmClass, mypack.MyCommonClass) + + public static final void commonFunctionWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// commonFunctionWithActualization(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void intermediateFunction1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// intermediateFunction1(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void intermediateFunction2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// intermediateFunction2(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void intermediateFunctionWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// intermediateFunctionWithActualization(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void jvmFunction1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// jvmFunction1(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass, mypack.MyJvmClass) + + public static final void jvmFunction2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// jvmFunction2(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass, mypack.MyJvmClass) + + public static final void setCommonVariable1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setCommonVariable1(mypack.MyJvmClass) + + public static final void setCommonVariable2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setCommonVariable2(mypack.MyJvmClass) + + public static final void setCommonVariableWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setCommonVariableWithActualization(mypack.MyJvmClass) + + public static final void setIntermediateVariable1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setIntermediateVariable1(mypack.MyJvmClass) + + public static final void setIntermediateVariable2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setIntermediateVariable2(mypack.MyJvmClass) + + public static final void setIntermediateVariableWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setIntermediateVariableWithActualization(mypack.MyJvmClass) + + public static final void setJvmVariable1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setJvmVariable1(mypack.MyJvmClass) + + public static final void setJvmVariable2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setJvmVariable2(mypack.MyJvmClass) +} \ No newline at end of file diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.java new file mode 100644 index 00000000000..2d553a5c530 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.java @@ -0,0 +1,22 @@ +public final class MyFacadeKt /* mypack.MyFacadeKt*/ { + @org.jetbrains.annotations.NotNull() + public static final mypack.MyCommonClassWithActualization getCommonVariable1();// getCommonVariable1() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyCommonClassWithActualization getCommonVariable2();// getCommonVariable2() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyCommonClassWithActualization getCommonVariableWithActualization();// getCommonVariableWithActualization() + + public static final void commonFunction1(@org.jetbrains.annotations.NotNull() mypack.MyCommonClassWithActualization, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass);// commonFunction1(mypack.MyCommonClassWithActualization, mypack.MyCommonClass) + + public static final void commonFunction2(@org.jetbrains.annotations.NotNull() mypack.MyCommonClassWithActualization, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass);// commonFunction2(mypack.MyCommonClassWithActualization, mypack.MyCommonClass) + + public static final void commonFunctionWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyCommonClassWithActualization, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass);// commonFunctionWithActualization(mypack.MyCommonClassWithActualization, mypack.MyCommonClass) + + public static final void setCommonVariable1(@org.jetbrains.annotations.NotNull() mypack.MyCommonClassWithActualization);// setCommonVariable1(mypack.MyCommonClassWithActualization) + + public static final void setCommonVariable2(@org.jetbrains.annotations.NotNull() mypack.MyCommonClassWithActualization);// setCommonVariable2(mypack.MyCommonClassWithActualization) + + public static final void setCommonVariableWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyCommonClassWithActualization);// setCommonVariableWithActualization(mypack.MyCommonClassWithActualization) +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.kt b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.kt new file mode 100644 index 00000000000..8f4d01152a8 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.kt @@ -0,0 +1,138 @@ +// mypack.MyFacadeKt +// SKIP_IDE_TEST +// MODULE: main-common +// FILE: commonFile1.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +expect fun commonFunctionWithActualization(commonActualization: MyCommonClassWithActualization, common: MyCommonClass) +expect var commonVariableWithActualization: MyCommonClassWithActualization + +fun commonFunction1(commonActualization: MyCommonClassWithActualization, common: MyCommonClass) { + +} + +expect class MyCommonClassWithActualization +class MyCommonClass + +var commonVariable1: MyCommonClassWithActualization + +// FILE: commonFile2.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +fun commonFunction2(commonActualization: MyCommonClassWithActualization, common: MyCommonClass) { + +} + +var commonVariable2: MyCommonClassWithActualization + +// MODULE: intermediate-common()()(main-common) +// FILE: intermediateFile1.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +expect fun intermediateFunctionWithActualization( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) + +expect var intermediateVariableWithActualization: IntermediateClassWithActualization + +fun intermediateFunction1( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) { + +} + +expect class IntermediateClassWithActualization +class MyIntermediateClass + +actual typealias MyCommonClassWithActualization = IntermediateClassWithActualization + +var intermediateVariable1: IntermediateClassWithActualization + +// FILE: intermediateFile2.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +fun intermediateFunction2( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) { + +} + +var intermediateVariable2: IntermediateClassWithActualization + +// MODULE: jvm()()(intermediate-common) +// FILE: jvmFile1.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +fun jvmFunction1( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, + jvm: MyJvmClass, +) { + +} + +var jvmVariable1: MyJvmClass + +actual fun intermediateFunctionWithActualization( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) { + +} + +actual var intermediateVariableWithActualization: IntermediateClassWithActualization + +// FILE: jvmFile2.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +actual fun commonFunctionWithActualization( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) { + +} + +actual var commonVariableWithActualization: MyCommonClassWithActualization = "str" + +fun jvmFunction2( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, + jvm: MyJvmClass, +) { + +} + +actual typealias IntermediateClassWithActualization = MyJvmClass + +var jvmVariable2: MyJvmClass + +class MyJvmClass diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.descriptors.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.descriptors.java new file mode 100644 index 00000000000..8a4e67a1460 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.descriptors.java @@ -0,0 +1,57 @@ +public final class MyFacadeKt /* mypack.MyFacadeKt*/ { + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getCommonVariable1();// getCommonVariable1() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getCommonVariable2();// getCommonVariable2() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getCommonVariableWithActualization();// getCommonVariableWithActualization() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getIntermediateVariable1();// getIntermediateVariable1() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getIntermediateVariable2();// getIntermediateVariable2() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getIntermediateVariableWithActualization();// getIntermediateVariableWithActualization() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getJvmVariable1();// getJvmVariable1() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getJvmVariable2();// getJvmVariable2() + + public static final void commonFunction1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass);// commonFunction1(mypack.MyJvmClass, mypack.MyCommonClass) + + public static final void commonFunction2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass);// commonFunction2(mypack.MyJvmClass, mypack.MyCommonClass) + + public static final void commonFunctionWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// commonFunctionWithActualization(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void intermediateFunction1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// intermediateFunction1(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void intermediateFunction2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// intermediateFunction2(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void intermediateFunctionWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// intermediateFunctionWithActualization(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void jvmFunction1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// jvmFunction1(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass, mypack.MyJvmClass) + + public static final void jvmFunction2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// jvmFunction2(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass, mypack.MyJvmClass) + + public static final void setCommonVariable1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setCommonVariable1(mypack.MyJvmClass) + + public static final void setCommonVariable2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setCommonVariable2(mypack.MyJvmClass) + + public static final void setCommonVariableWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setCommonVariableWithActualization(mypack.MyJvmClass) + + public static final void setIntermediateVariable1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setIntermediateVariable1(mypack.MyJvmClass) + + public static final void setIntermediateVariable2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setIntermediateVariable2(mypack.MyJvmClass) + + public static final void setIntermediateVariableWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setIntermediateVariableWithActualization(mypack.MyJvmClass) + + public static final void setJvmVariable1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setJvmVariable1(mypack.MyJvmClass) + + public static final void setJvmVariable2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setJvmVariable2(mypack.MyJvmClass) +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.java new file mode 100644 index 00000000000..3023a440dbf --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.java @@ -0,0 +1,22 @@ +public final class MyFacadeKt /* mypack.MyFacadeKt*/ { + @org.jetbrains.annotations.NotNull() + public static final mypack.IntermediateClassWithActualization getIntermediateVariable1();// getIntermediateVariable1() + + @org.jetbrains.annotations.NotNull() + public static final mypack.IntermediateClassWithActualization getIntermediateVariable2();// getIntermediateVariable2() + + @org.jetbrains.annotations.NotNull() + public static final mypack.IntermediateClassWithActualization getIntermediateVariableWithActualization();// getIntermediateVariableWithActualization() + + public static final void intermediateFunction1(@org.jetbrains.annotations.NotNull() mypack.IntermediateClassWithActualization, @org.jetbrains.annotations.NotNull() mypack.IntermediateClassWithActualization, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// intermediateFunction1(mypack.IntermediateClassWithActualization, mypack.IntermediateClassWithActualization, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void intermediateFunction2(@org.jetbrains.annotations.NotNull() mypack.IntermediateClassWithActualization, @org.jetbrains.annotations.NotNull() mypack.IntermediateClassWithActualization, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// intermediateFunction2(mypack.IntermediateClassWithActualization, mypack.IntermediateClassWithActualization, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void intermediateFunctionWithActualization(@org.jetbrains.annotations.NotNull() mypack.IntermediateClassWithActualization, @org.jetbrains.annotations.NotNull() mypack.IntermediateClassWithActualization, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// intermediateFunctionWithActualization(mypack.IntermediateClassWithActualization, mypack.IntermediateClassWithActualization, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void setIntermediateVariable1(@org.jetbrains.annotations.NotNull() mypack.IntermediateClassWithActualization);// setIntermediateVariable1(mypack.IntermediateClassWithActualization) + + public static final void setIntermediateVariable2(@org.jetbrains.annotations.NotNull() mypack.IntermediateClassWithActualization);// setIntermediateVariable2(mypack.IntermediateClassWithActualization) + + public static final void setIntermediateVariableWithActualization(@org.jetbrains.annotations.NotNull() mypack.IntermediateClassWithActualization);// setIntermediateVariableWithActualization(mypack.IntermediateClassWithActualization) +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.kt b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.kt new file mode 100644 index 00000000000..2253964465e --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.kt @@ -0,0 +1,138 @@ +// mypack.MyFacadeKt +// SKIP_IDE_TEST +// MODULE: common +// FILE: commonFile1.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +expect fun commonFunctionWithActualization(commonActualization: MyCommonClassWithActualization, common: MyCommonClass) +expect var commonVariableWithActualization: MyCommonClassWithActualization + +fun commonFunction1(commonActualization: MyCommonClassWithActualization, common: MyCommonClass) { + +} + +expect class MyCommonClassWithActualization +class MyCommonClass + +var commonVariable1: MyCommonClassWithActualization + +// FILE: commonFile2.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +fun commonFunction2(commonActualization: MyCommonClassWithActualization, common: MyCommonClass) { + +} + +var commonVariable2: MyCommonClassWithActualization + +// MODULE: main-intermediate-common()()(common) +// FILE: intermediateFile1.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +expect fun intermediateFunctionWithActualization( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) + +expect var intermediateVariableWithActualization: IntermediateClassWithActualization + +fun intermediateFunction1( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) { + +} + +expect class IntermediateClassWithActualization +class MyIntermediateClass + +actual typealias MyCommonClassWithActualization = IntermediateClassWithActualization + +var intermediateVariable1: IntermediateClassWithActualization + +// FILE: intermediateFile2.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +fun intermediateFunction2( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) { + +} + +var intermediateVariable2: IntermediateClassWithActualization + +// MODULE: jvm()()(main-intermediate-common) +// FILE: jvmFile1.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +fun jvmFunction1( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, + jvm: MyJvmClass, +) { + +} + +var jvmVariable1: MyJvmClass + +actual fun intermediateFunctionWithActualization( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) { + +} + +actual var intermediateVariableWithActualization: IntermediateClassWithActualization + +// FILE: jvmFile2.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +actual fun commonFunctionWithActualization( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) { + +} + +actual var commonVariableWithActualization: MyCommonClassWithActualization = "str" + +fun jvmFunction2( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, + jvm: MyJvmClass, +) { + +} + +actual typealias IntermediateClassWithActualization = MyJvmClass + +var jvmVariable2: MyJvmClass + +class MyJvmClass diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.descriptors.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.descriptors.java new file mode 100644 index 00000000000..8a4e67a1460 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.descriptors.java @@ -0,0 +1,57 @@ +public final class MyFacadeKt /* mypack.MyFacadeKt*/ { + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getCommonVariable1();// getCommonVariable1() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getCommonVariable2();// getCommonVariable2() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getCommonVariableWithActualization();// getCommonVariableWithActualization() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getIntermediateVariable1();// getIntermediateVariable1() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getIntermediateVariable2();// getIntermediateVariable2() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getIntermediateVariableWithActualization();// getIntermediateVariableWithActualization() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getJvmVariable1();// getJvmVariable1() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getJvmVariable2();// getJvmVariable2() + + public static final void commonFunction1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass);// commonFunction1(mypack.MyJvmClass, mypack.MyCommonClass) + + public static final void commonFunction2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass);// commonFunction2(mypack.MyJvmClass, mypack.MyCommonClass) + + public static final void commonFunctionWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// commonFunctionWithActualization(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void intermediateFunction1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// intermediateFunction1(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void intermediateFunction2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// intermediateFunction2(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void intermediateFunctionWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// intermediateFunctionWithActualization(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void jvmFunction1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// jvmFunction1(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass, mypack.MyJvmClass) + + public static final void jvmFunction2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// jvmFunction2(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass, mypack.MyJvmClass) + + public static final void setCommonVariable1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setCommonVariable1(mypack.MyJvmClass) + + public static final void setCommonVariable2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setCommonVariable2(mypack.MyJvmClass) + + public static final void setCommonVariableWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setCommonVariableWithActualization(mypack.MyJvmClass) + + public static final void setIntermediateVariable1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setIntermediateVariable1(mypack.MyJvmClass) + + public static final void setIntermediateVariable2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setIntermediateVariable2(mypack.MyJvmClass) + + public static final void setIntermediateVariableWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setIntermediateVariableWithActualization(mypack.MyJvmClass) + + public static final void setJvmVariable1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setJvmVariable1(mypack.MyJvmClass) + + public static final void setJvmVariable2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setJvmVariable2(mypack.MyJvmClass) +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.java b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.java new file mode 100644 index 00000000000..05030550b00 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.java @@ -0,0 +1,29 @@ +public final class MyFacadeKt /* mypack.MyFacadeKt*/ { + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getCommonVariableWithActualization();// getCommonVariableWithActualization() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getIntermediateVariableWithActualization();// getIntermediateVariableWithActualization() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getJvmVariable1();// getJvmVariable1() + + @org.jetbrains.annotations.NotNull() + public static final mypack.MyJvmClass getJvmVariable2();// getJvmVariable2() + + public static final void commonFunctionWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// commonFunctionWithActualization(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void intermediateFunctionWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass);// intermediateFunctionWithActualization(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass) + + public static final void jvmFunction1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// jvmFunction1(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass, mypack.MyJvmClass) + + public static final void jvmFunction2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass, @org.jetbrains.annotations.NotNull() mypack.MyCommonClass, @org.jetbrains.annotations.NotNull() mypack.MyIntermediateClass, @org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// jvmFunction2(mypack.MyJvmClass, mypack.MyJvmClass, mypack.MyCommonClass, mypack.MyIntermediateClass, mypack.MyJvmClass) + + public static final void setCommonVariableWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setCommonVariableWithActualization(mypack.MyJvmClass) + + public static final void setIntermediateVariableWithActualization(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setIntermediateVariableWithActualization(mypack.MyJvmClass) + + public static final void setJvmVariable1(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setJvmVariable1(mypack.MyJvmClass) + + public static final void setJvmVariable2(@org.jetbrains.annotations.NotNull() mypack.MyJvmClass);// setJvmVariable2(mypack.MyJvmClass) +} diff --git a/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.kt b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.kt new file mode 100644 index 00000000000..a8a1625844b --- /dev/null +++ b/compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.kt @@ -0,0 +1,138 @@ +// mypack.MyFacadeKt +// SKIP_IDE_TEST +// MODULE: common +// FILE: commonFile1.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +expect fun commonFunctionWithActualization(commonActualization: MyCommonClassWithActualization, common: MyCommonClass) +expect var commonVariableWithActualization: MyCommonClassWithActualization + +fun commonFunction1(commonActualization: MyCommonClassWithActualization, common: MyCommonClass) { + +} + +expect class MyCommonClassWithActualization +class MyCommonClass + +var commonVariable1: MyCommonClassWithActualization + +// FILE: commonFile2.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +fun commonFunction2(commonActualization: MyCommonClassWithActualization, common: MyCommonClass) { + +} + +var commonVariable2: MyCommonClassWithActualization + +// MODULE: intermediate-common()()(common) +// FILE: intermediateFile1.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +expect fun intermediateFunctionWithActualization( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) + +expect var intermediateVariableWithActualization: IntermediateClassWithActualization + +fun intermediateFunction1( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) { + +} + +expect class IntermediateClassWithActualization +class MyIntermediateClass + +actual typealias MyCommonClassWithActualization = IntermediateClassWithActualization + +var intermediateVariable1: IntermediateClassWithActualization + +// FILE: intermediateFile2.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +fun intermediateFunction2( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) { + +} + +var intermediateVariable2: IntermediateClassWithActualization + +// MODULE: main-jvm()()(intermediate-common) +// FILE: jvmFile1.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +fun jvmFunction1( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, + jvm: MyJvmClass, +) { + +} + +var jvmVariable1: MyJvmClass + +actual fun intermediateFunctionWithActualization( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) { + +} + +actual var intermediateVariableWithActualization: IntermediateClassWithActualization + +// FILE: jvmFile2.kt +@file:JvmName("MyFacadeKt") +@file:JvmMultifileClass +package mypack + +actual fun commonFunctionWithActualization( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, +) { + +} + +actual var commonVariableWithActualization: MyCommonClassWithActualization = "str" + +fun jvmFunction2( + commonActualization: MyCommonClassWithActualization, + intermediateActualization: IntermediateClassWithActualization, + common: MyCommonClass, + intermediate: MyIntermediateClass, + jvm: MyJvmClass, +) { + +} + +actual typealias IntermediateClassWithActualization = MyJvmClass + +var jvmVariable2: MyJvmClass + +class MyJvmClass diff --git a/compiler/tests-gen/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java index f345d962323..ff886ed611f 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java @@ -371,6 +371,21 @@ public class CompilerLightClassTestGenerated extends AbstractCompilerLightClassT runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/LocalInAnnotation.kt"); } + @TestMetadata("MultiplatformCommonFacade.kt") + public void testMultiplatformCommonFacade() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformCommonFacade.kt"); + } + + @TestMetadata("MultiplatformIntermediateFacade.kt") + public void testMultiplatformIntermediateFacade() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformIntermediateFacade.kt"); + } + + @TestMetadata("MultiplatformJvmFacade.kt") + public void testMultiplatformJvmFacade() throws Exception { + runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/MultiplatformJvmFacade.kt"); + } + @TestMetadata("PrivateInTrait.kt") public void testPrivateInTrait() throws Exception { runTest("compiler/testData/asJava/lightClasses/lightClassByFqName/compilationErrors/PrivateInTrait.kt");