diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt index 181284926aa..453445fd4bc 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/HierarchicalMppIT.kt @@ -211,6 +211,14 @@ class HierarchicalMppIT : BaseGradleIT() { } } + // If we tested the build of the sample multimodules project we could catch KT-48370 at an earlier stage. + @Test + fun testMultiModulesHmpp() = with(Project("hierarchical-mpp-multi-modules", GradleVersionRequired.FOR_MPP_SUPPORT)) { + build("assemble", options = defaultBuildOptions().copy(parallelTasksInProject = true)) { + assertSuccessful() + } + } + private fun publishThirdPartyLib( projectName: String = "third-party-lib", directoryPrefix: String = "hierarchical-mpp-published-modules", diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/build.gradle new file mode 100644 index 00000000000..0a0cdb7b9db --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/build.gradle @@ -0,0 +1,29 @@ +apply plugin: 'java' +apply plugin: 'kotlin' +apply plugin: 'maven-publish' + + +dependencies { + testApi "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version" + testApi "org.jetbrains.kotlin:kotlin-test:$kotlin_version" + testApi group: 'junit', name: 'junit', version: '4.12' + api "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" +} + +[compileKotlin, compileTestKotlin]*.configure { + kotlinOptions { + kotlinOptions.jvmTarget = "1.8" + } +} + + +publishing { + publications { + mavenJava(MavenPublication) { + groupId 'org.jetbrains.qa.combompp' + artifactId 'api-jvm' + version publishing_version + from components.java + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/kt17916/ImJDeprecated.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/kt17916/ImJDeprecated.java new file mode 100644 index 00000000000..ddc5f5034f2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/kt17916/ImJDeprecated.java @@ -0,0 +1,10 @@ +package kt17916; + + +@Deprecated() +public class ImJDeprecated { + @Deprecated + public static String deprJavaField17916 = "fhjbsvs"; + + public static String sparam = "fsjg"; +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/kt17916/JCaller.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/kt17916/JCaller.java new file mode 100644 index 00000000000..fc5481e1890 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/kt17916/JCaller.java @@ -0,0 +1,7 @@ +package kt17916; + +import static kt17916.ImJDeprecated.sparam; + +public class JCaller { + String scall = sparam; +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/pkg/FooImpl.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/pkg/FooImpl.java new file mode 100644 index 00000000000..a9199085212 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/pkg/FooImpl.java @@ -0,0 +1,5 @@ +package pkg; + +public @interface FooImpl { + String value() default "abc"; // should be OK +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/transitiveStory/apiJvm/jbeginning/JavaApiContainer.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/transitiveStory/apiJvm/jbeginning/JavaApiContainer.java new file mode 100644 index 00000000000..2e1b9b13082 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/transitiveStory/apiJvm/jbeginning/JavaApiContainer.java @@ -0,0 +1,20 @@ +package transitiveStory.apiJvm.jbeginning; + +import playground.SomeUsefulInfoKt; + +public class JavaApiContainer { + private String privateJavaDeclaration = "I'm a private string from `" + SomeUsefulInfoKt.getModuleName() + + "` and shall be never visible to the others."; + + String packageVisibleJavaDeclaration = "I'm a packag1e visible string from `" + SomeUsefulInfoKt.getModuleName() + + "` and shall be never visible to the other modules."; + + protected String protectedJavaDeclaration = "I'm a protected string from `" + SomeUsefulInfoKt.getModuleName() + + "` and shall be never visible to the other modules except my subclasses."; + + public String publicJavaDeclaration = "I'm a public string from `" + SomeUsefulInfoKt.getModuleName() + + "` and shall be visible to the other modules."; + + public static String publicStaticJavaDeclaration = "I'm a public static string from `" + SomeUsefulInfoKt.getModuleName() + + "` and shall be visible to the other modules even without instantiation of `JavaApiContainer` class."; +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/verification/kt33972japi/InheritTheJApi33972.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/verification/kt33972japi/InheritTheJApi33972.java new file mode 100644 index 00000000000..2d12b2af2b1 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/verification/kt33972japi/InheritTheJApi33972.java @@ -0,0 +1,6 @@ +package verification.kt33972japi; + +public class InheritTheJApi33972 { + public void overrideMe(String s, int i, Double aDouble) { + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/verification/kt33972japi/InheritTheJInter33972.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/verification/kt33972japi/InheritTheJInter33972.java new file mode 100644 index 00000000000..a5159461757 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/java/verification/kt33972japi/InheritTheJInter33972.java @@ -0,0 +1,5 @@ +package verification.kt33972japi; + +public interface InheritTheJInter33972 { + public void overrideMeToo(String $self, String str2); +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/kotlin/playground/SomeUsefulInfo.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/kotlin/playground/SomeUsefulInfo.kt new file mode 100644 index 00000000000..583a3477850 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/kotlin/playground/SomeUsefulInfo.kt @@ -0,0 +1,11 @@ +package playground + +val callMeFromMPP = 42 + +val moduleName = "api-jvm" + +class SomeUsefulInfo + +fun main() { + println("Hello±!") +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/kotlin/transitiveStory/apiJvm/beginning/KotlinApiContainer.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/kotlin/transitiveStory/apiJvm/beginning/KotlinApiContainer.kt new file mode 100644 index 00000000000..b5d044472d1 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/main/kotlin/transitiveStory/apiJvm/beginning/KotlinApiContainer.kt @@ -0,0 +1,24 @@ +package transitiveStory.apiJvm.beginning + +import playground.moduleName + +open class KotlinApiContainer { + private val privateKotlinDeclaration = "I'm a private Kotlin string from `" + moduleName + + "` and shall be never visible to the others." + + internal val packageVisibleKotlinDeclaration = "I'm a package visible Kotlin string from `" + moduleName + + "` and shall be never visible to the other modules." + + protected open val protectedKotlinDeclaration = "I'm a protected Kotlin string from `" + moduleName + + "` and shall be never visible to the other modules except my subclasses." + + val publicKotlinDeclaration = "I'm a public Kotlin string from `" + moduleName + + "` and shall be visible to the other modules." + + companion object { + val publicStaticKotlinDeclaration = "I'm a public Kotlin static string from `" + moduleName + + "` and shall be visible to the other modules even without instantiation of `JavaApiContainer` class." + } +} + +val tlAPIval = 42 diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/test/java/transitiveStory/apiJvm/jtest/smokeTest/JClassForTheSmokeTestFromApi.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/test/java/transitiveStory/apiJvm/jtest/smokeTest/JClassForTheSmokeTestFromApi.java new file mode 100644 index 00000000000..aa1bfa1541d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/test/java/transitiveStory/apiJvm/jtest/smokeTest/JClassForTheSmokeTestFromApi.java @@ -0,0 +1,4 @@ +package transitiveStory.apiJvm.jtest.smokeTest; + +public class JClassForTheSmokeTestFromApi { +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/test/java/verification/kt17916jt/CallerT.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/test/java/verification/kt17916jt/CallerT.java new file mode 100644 index 00000000000..f195daaaefe --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/test/java/verification/kt17916jt/CallerT.java @@ -0,0 +1,15 @@ +package verification.kt17916jt; + +import org.junit.internal.AssumptionViolatedException; +import org.junit.rules.TestWatcher; +import org.junit.runner.Description; + +public class CallerT extends TestWatcher { + void twatcherCall(TestWatcher testWatcher) { + } + + @Override + protected void skipped(AssumptionViolatedException e, Description description) { + super.skipped(e, description); + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/test/kotlin/transitiveStory/apiJvm/test/smokeTest/ForTheSmokeTestFromApi.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/test/kotlin/transitiveStory/apiJvm/test/smokeTest/ForTheSmokeTestFromApi.kt new file mode 100644 index 00000000000..5daeed91495 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/api-jvm/src/test/kotlin/transitiveStory/apiJvm/test/smokeTest/ForTheSmokeTestFromApi.kt @@ -0,0 +1,20 @@ +package transitiveStory.apiJvm.test.smokeTest + +import org.junit.Test +import transitiveStory.apiJvm.beginning.tlAPIval +import kotlin.test.assertEquals + +class KClassForTheSmokeTestFromApi { +} + +class SomeTestInApiJVM { + @Test + fun some() { + println("I'm simple test in `api-jvm` module") + assertEquals(tlAPIval, 42) + } + + // KT-33573 + @Test + fun `function with spaces`() {} +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/build.gradle new file mode 100644 index 00000000000..ba1e70b0c2e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/build.gradle @@ -0,0 +1,119 @@ +group 'org.jetbrains.qa.combompp' +version '1.0' + +apply plugin: 'kotlin-multiplatform' +apply plugin: 'maven-publish' + +def complexLibAttribute = Attribute.of('org.jetbrains.qa.complexlib', String) + +kotlin { + jvm("jvmWithJava") { + withJava() + attributes { attribute(complexLibAttribute, 'jvmWithJava') } + + compilations.all { + kotlinOptions.jvmTarget = "1.8" + } + } + jvm("jvm16") { + attributes { attribute(complexLibAttribute, 'jvm16') } + + compilations.all { + kotlinOptions.jvmTarget = "1.6" + } + } + // This is for iPhone emulator + // Switch here to iosArm64 (or iosArm32) to build library for iPhone device + iosX64("iosSimLib") { + binaries { + // framework() + // Creating static library with a custom name. + staticLib('customNameForiosSimLib') { + outputDirectory = file("fooCustomNameForiosSimLib") // outputDir is a `val` property. + linkTask.destinationDir = file("fooCustomNameForiosSimLib") + } + } + } + + // inline classes are enabled below + targets.all { + compilations.all { + kotlinOptions { + freeCompilerArgs += ["-Xprogressive", "-XXLanguage:+NewInference", "-XXLanguage:+SamConversionForKotlinFunctions", "-Xuse-experimental=kotlin.ExperimentalMultiplatform", "-Xskip-prerelease-check"] + } + } + } + + sourceSets { + commonMain { + dependencies { } + } + commonTest { + dependencies { } + } + + // creating a diamond + jvmJavaJvm16Main { + dependsOn commonMain + dependencies { + api project(":api-jvm") + } + } + + jvmJavaJvm16Test { + dependsOn commonTest + } + + jvmWithJavaiOSMain { + dependsOn commonMain + dependencies { + api project(":top-mpp") + } + } + + jvmWithJavaiOSTest { + dependsOn commonTest + } + + // setting up the targets source sets + jvm16Main { + dependencies { } + + // connecting to the diamond + dependsOn jvmJavaJvm16Main + } + jvm16Test { + dependencies { } + + // connecting to the diamond + dependsOn jvmJavaJvm16Test + } + jvmWithJavaMain { + dependencies { } + + // connecting to the diamond + dependsOn jvmJavaJvm16Main + dependsOn jvmWithJavaiOSMain + } + jvmWithJavaTest { + dependencies { } + + // connecting to the diamond + dependsOn jvmJavaJvm16Test + dependsOn jvmWithJavaiOSTest + } + + iosSimLibMain { + dependencies { } + + // connecting to the diamond + dependsOn jvmWithJavaiOSMain + } + iosSimLibTest { + dependencies { } + + // connecting to the diamond + dependsOn jvmWithJavaiOSTest + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/fooCustomNameForiosSimLib/libcustomNameForiosSimLib.a b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/fooCustomNameForiosSimLib/libcustomNameForiosSimLib.a new file mode 100644 index 00000000000..43ba5e3ee66 Binary files /dev/null and b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/fooCustomNameForiosSimLib/libcustomNameForiosSimLib.a differ diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/fooCustomNameForiosSimLib/libcustomNameForiosSimLib_api.h b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/fooCustomNameForiosSimLib/libcustomNameForiosSimLib_api.h new file mode 100644 index 00000000000..9216a32b959 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/fooCustomNameForiosSimLib/libcustomNameForiosSimLib_api.h @@ -0,0 +1,139 @@ +#ifndef KONAN_LIBCUSTOMNAMEFORIOSSIMLIB_H +#define KONAN_LIBCUSTOMNAMEFORIOSSIMLIB_H +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +typedef bool libcustomNameForiosSimLib_KBoolean; +#else +typedef _Bool libcustomNameForiosSimLib_KBoolean; +#endif +typedef unsigned short libcustomNameForiosSimLib_KChar; +typedef signed char libcustomNameForiosSimLib_KByte; +typedef short libcustomNameForiosSimLib_KShort; +typedef int libcustomNameForiosSimLib_KInt; +typedef long long libcustomNameForiosSimLib_KLong; +typedef unsigned char libcustomNameForiosSimLib_KUByte; +typedef unsigned short libcustomNameForiosSimLib_KUShort; +typedef unsigned int libcustomNameForiosSimLib_KUInt; +typedef unsigned long long libcustomNameForiosSimLib_KULong; +typedef float libcustomNameForiosSimLib_KFloat; +typedef double libcustomNameForiosSimLib_KDouble; +typedef float __attribute__ ((__vector_size__ (16))) libcustomNameForiosSimLib_KVector128; +typedef void* libcustomNameForiosSimLib_KNativePtr; +struct libcustomNameForiosSimLib_KType; +typedef struct libcustomNameForiosSimLib_KType libcustomNameForiosSimLib_KType; + +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_kotlin_Byte; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_kotlin_Short; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_kotlin_Int; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_kotlin_Long; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_kotlin_Float; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_kotlin_Double; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_kotlin_Char; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_kotlin_Boolean; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_kotlin_Unit; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_transitiveStory_midActual_commonSource_SomeMPPInTheCommon; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_transitiveStory_midActual_commonSource_SomeMPPInTheCommon_Compainon; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_transitiveStory_midActual_sourceCalls_intemediateCall_BottomActualCommonInheritor; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_transitiveStory_midActual_sourceCalls_intemediateCall_BottomActualMPPInheritor; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_transitiveStory_midActual_sourceCalls_intemediateCall_SecondModCaller; +typedef struct { + libcustomNameForiosSimLib_KNativePtr pinned; +} libcustomNameForiosSimLib_kref_transitiveStory_bottomActual_intermediateSrc_IntermediateMPPClassInBottomActual; + + +typedef struct { + /* Service functions. */ + void (*DisposeStablePointer)(libcustomNameForiosSimLib_KNativePtr ptr); + void (*DisposeString)(const char* string); + libcustomNameForiosSimLib_KBoolean (*IsInstance)(libcustomNameForiosSimLib_KNativePtr ref, const libcustomNameForiosSimLib_KType* type); + libcustomNameForiosSimLib_kref_kotlin_Byte (*createNullableByte)(libcustomNameForiosSimLib_KByte); + libcustomNameForiosSimLib_kref_kotlin_Short (*createNullableShort)(libcustomNameForiosSimLib_KShort); + libcustomNameForiosSimLib_kref_kotlin_Int (*createNullableInt)(libcustomNameForiosSimLib_KInt); + libcustomNameForiosSimLib_kref_kotlin_Long (*createNullableLong)(libcustomNameForiosSimLib_KLong); + libcustomNameForiosSimLib_kref_kotlin_Float (*createNullableFloat)(libcustomNameForiosSimLib_KFloat); + libcustomNameForiosSimLib_kref_kotlin_Double (*createNullableDouble)(libcustomNameForiosSimLib_KDouble); + libcustomNameForiosSimLib_kref_kotlin_Char (*createNullableChar)(libcustomNameForiosSimLib_KChar); + libcustomNameForiosSimLib_kref_kotlin_Boolean (*createNullableBoolean)(libcustomNameForiosSimLib_KBoolean); + libcustomNameForiosSimLib_kref_kotlin_Unit (*createNullableUnit)(void); + + /* User functions. */ + struct { + struct { + struct { + struct { + struct { + const char* (*get_moduleName)(); + const char* (*get_sourceSetName)(); + const char* (*regularTLfunInTheMidActualCommmon)(const char* s); + struct { + libcustomNameForiosSimLib_KType* (*_type)(void); + libcustomNameForiosSimLib_kref_transitiveStory_midActual_commonSource_SomeMPPInTheCommon (*SomeMPPInTheCommon)(); + libcustomNameForiosSimLib_KInt (*get_simpleVal)(libcustomNameForiosSimLib_kref_transitiveStory_midActual_commonSource_SomeMPPInTheCommon thiz); + struct { + libcustomNameForiosSimLib_KType* (*_type)(void); + libcustomNameForiosSimLib_kref_transitiveStory_midActual_commonSource_SomeMPPInTheCommon_Compainon (*_instance)(); + const char* (*get_inTheCompanionOfBottomActualDeclarations)(libcustomNameForiosSimLib_kref_transitiveStory_midActual_commonSource_SomeMPPInTheCommon_Compainon thiz); + } Compainon; + } SomeMPPInTheCommon; + } commonSource; + struct { + struct { + struct { + libcustomNameForiosSimLib_KType* (*_type)(void); + libcustomNameForiosSimLib_kref_transitiveStory_midActual_sourceCalls_intemediateCall_BottomActualCommonInheritor (*BottomActualCommonInheritor)(); + } BottomActualCommonInheritor; + struct { + libcustomNameForiosSimLib_KType* (*_type)(void); + libcustomNameForiosSimLib_kref_transitiveStory_midActual_sourceCalls_intemediateCall_BottomActualMPPInheritor (*BottomActualMPPInheritor)(); + } BottomActualMPPInheritor; + struct { + libcustomNameForiosSimLib_KType* (*_type)(void); + libcustomNameForiosSimLib_kref_transitiveStory_midActual_sourceCalls_intemediateCall_SecondModCaller (*SecondModCaller)(); + libcustomNameForiosSimLib_kref_transitiveStory_bottomActual_intermediateSrc_IntermediateMPPClassInBottomActual (*get_interCallFive)(libcustomNameForiosSimLib_kref_transitiveStory_midActual_sourceCalls_intemediateCall_SecondModCaller thiz); + libcustomNameForiosSimLib_KInt (*get_interCallFour)(libcustomNameForiosSimLib_kref_transitiveStory_midActual_sourceCalls_intemediateCall_SecondModCaller thiz); + const char* (*get_interCallOne)(libcustomNameForiosSimLib_kref_transitiveStory_midActual_sourceCalls_intemediateCall_SecondModCaller thiz); + libcustomNameForiosSimLib_KInt (*get_interCallThree)(libcustomNameForiosSimLib_kref_transitiveStory_midActual_sourceCalls_intemediateCall_SecondModCaller thiz); + const char* (*get_interCallTwo)(libcustomNameForiosSimLib_kref_transitiveStory_midActual_sourceCalls_intemediateCall_SecondModCaller thiz); + } SecondModCaller; + } intemediateCall; + } sourceCalls; + } midActual; + } transitiveStory; + } root; + } kotlin; +} libcustomNameForiosSimLib_ExportedSymbols; +extern libcustomNameForiosSimLib_ExportedSymbols* libcustomNameForiosSimLib_symbols(void); +#ifdef __cplusplus +} /* extern "C" */ +#endif +#endif /* KONAN_LIBCUSTOMNAMEFORIOSSIMLIB_H */ diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/commonMain/kotlin/transitiveStory/midActual/commonSource/SomethinInTheCommon.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/commonMain/kotlin/transitiveStory/midActual/commonSource/SomethinInTheCommon.kt new file mode 100644 index 00000000000..ab91f1f50a5 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/commonMain/kotlin/transitiveStory/midActual/commonSource/SomethinInTheCommon.kt @@ -0,0 +1,17 @@ +package transitiveStory.midActual.commonSource + +val moduleName = "bottom-mpp" +expect val sourceSetName: String + +expect open class SomeMPPInTheCommon() { + val simpleVal: Int + + companion object Compainon { + val inTheCompanionOfBottomActualDeclarations: String + } +} + +fun regularTLfunInTheMidActualCommmon(s: String): String { + return "I'm a function at the top level of a file in `commonMain` source set of module $moduleName." + + "This is the message I've got: \n`$s`" +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/iosSimLibMain/kotlin/transitiveStory/midActual/commonSource/SomeMPPInTheCommon.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/iosSimLibMain/kotlin/transitiveStory/midActual/commonSource/SomeMPPInTheCommon.kt new file mode 100644 index 00000000000..b7fbaf80b6e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/iosSimLibMain/kotlin/transitiveStory/midActual/commonSource/SomeMPPInTheCommon.kt @@ -0,0 +1,12 @@ +package transitiveStory.midActual.commonSource + +actual open class SomeMPPInTheCommon actual constructor() { + actual val simpleVal: Int = 85 + + actual companion object Compainon { + actual val inTheCompanionOfBottomActualDeclarations: String = "I'm the string in `$sourceSetName` source set" + } + +} + +actual val sourceSetName: String = "iosSimLibMain" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/iosSimLibMain/kotlin/transitiveStory/midActual/sourceCalls/intemediateCall/BottomActualMPPInheritor.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/iosSimLibMain/kotlin/transitiveStory/midActual/sourceCalls/intemediateCall/BottomActualMPPInheritor.kt new file mode 100644 index 00000000000..9a332ba359e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/iosSimLibMain/kotlin/transitiveStory/midActual/sourceCalls/intemediateCall/BottomActualMPPInheritor.kt @@ -0,0 +1,5 @@ +package transitiveStory.midActual.sourceCalls.intemediateCall + +import transitiveStory.bottomActual.mppBeginning.BottomActualDeclarations + +actual class BottomActualMPPInheritor : BottomActualDeclarations() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/iosSimLibTest/kotlin/transitiveStory.midActual/CallInCTests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/iosSimLibTest/kotlin/transitiveStory.midActual/CallInCTests.kt new file mode 100644 index 00000000000..981a6b8fba9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/iosSimLibTest/kotlin/transitiveStory.midActual/CallInCTests.kt @@ -0,0 +1,18 @@ +package transitiveStory.midActual + +/*import playground.first.callMe307563354 +import playground.first.fsdkjgnfs*/ +import transitiveStory.bottomActual.mppBeginning.BottomActualDeclarations +import kotlin.test.Test +import kotlin.test.assertEquals + +val callInCTests = BottomActualDeclarations() + +class CallInCTests { + @Test + fun someTestCallingTransitiveDeps() { + // val call = callMe307563354 +// println(call) + assertEquals(true, true) + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvm16Main/kotlin/transitiveStory/midActual/commonSource/SomeMPPInTheCommon.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvm16Main/kotlin/transitiveStory/midActual/commonSource/SomeMPPInTheCommon.kt new file mode 100644 index 00000000000..1e5fa068cec --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvm16Main/kotlin/transitiveStory/midActual/commonSource/SomeMPPInTheCommon.kt @@ -0,0 +1,13 @@ +package transitiveStory.midActual.commonSource + + +actual open class SomeMPPInTheCommon actual constructor() { + actual val simpleVal: Int = 16 + + actual companion object Compainon { + actual val inTheCompanionOfBottomActualDeclarations: String = "I'm the string in `$sourceSetName` source set" + } + +} + +actual val sourceSetName: String = "jvm16Main" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmJavaJvm16Main/kotlin/transitiveStory/jvmMidActual/CallingSomeApis.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmJavaJvm16Main/kotlin/transitiveStory/jvmMidActual/CallingSomeApis.kt new file mode 100644 index 00000000000..e1375a7ba3b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmJavaJvm16Main/kotlin/transitiveStory/jvmMidActual/CallingSomeApis.kt @@ -0,0 +1,7 @@ +package transitiveStory.jvmMidActual + +import transitiveStory.apiJvm.jbeginning.JavaApiContainer + +object CallingSomeApis { + val first = JavaApiContainer() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/java/transitiveStory/midActual/allTheCallsMirror/TheSameCallsButJava.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/java/transitiveStory/midActual/allTheCallsMirror/TheSameCallsButJava.java new file mode 100644 index 00000000000..8304e060273 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/java/transitiveStory/midActual/allTheCallsMirror/TheSameCallsButJava.java @@ -0,0 +1,42 @@ +package transitiveStory.midActual.allTheCallsMirror; + +import transitiveStory.apiJvm.beginning.KotlinApiContainer; +import transitiveStory.apiJvm.jbeginning.JavaApiContainer; +import transitiveStory.bottomActual.apiCall.Jvm18KApiInheritor; +import transitiveStory.bottomActual.intermediateSrc.IntermediateMPPClassInBottomActual; +import transitiveStory.bottomActual.jApiCall.JApiCallerInJVM18; +import transitiveStory.bottomActual.mppBeginning.BottomActualDeclarations; + +import static transitiveStory.bottomActual.mppBeginning.BottomActualDeclarationsKt.regularTLfunInTheBottomActualCommmon; + +public class TheSameCallsButJava { + // ========= api calls ========== + // java + JavaApiContainer jApiOne = new JavaApiContainer(); + + // kotlin + KotlinApiContainer kApiOne = new KotlinApiContainer(); + + // ========= mpp-bottom-actual calls ========== + // common source set + String interCallOne = regularTLfunInTheBottomActualCommmon("Some string from `mpp-mid-actual` module"); + // String interCallTwo = inTheCompanionOfBottomActualDeclarations; + String some = regularTLfunInTheBottomActualCommmon(""); + + // intermediate source set + // https://youtrack.jetbrains.com/issue/KT-33733 + BottomActualDeclarations interCallThree = new BottomActualDeclarations(); + + // ========= jvm18 source set (attempt to) ========== + // java + JApiCallerInJVM18 jApiCallerInJVM18 = new JApiCallerInJVM18(); + + // kotlin + Jvm18KApiInheritor jvm18KApiInheritor = new Jvm18KApiInheritor(); + IntermediateMPPClassInBottomActual intermediateMPPClassInBottomActual = new IntermediateMPPClassInBottomActual(); +} + +/* +// experiments with intermod inheritance +class BottomActualCommonInheritorInJVM : BottomActualDeclarations() +*/ \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/kotlin/transitiveStory/midActual/commonSource/SomeMPPInTheCommon.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/kotlin/transitiveStory/midActual/commonSource/SomeMPPInTheCommon.kt new file mode 100644 index 00000000000..4a5ec8ad366 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/kotlin/transitiveStory/midActual/commonSource/SomeMPPInTheCommon.kt @@ -0,0 +1,12 @@ +package transitiveStory.midActual.commonSource + +actual open class SomeMPPInTheCommon actual constructor() { + actual val simpleVal: Int = 18 + + actual companion object Compainon { + actual val inTheCompanionOfBottomActualDeclarations: String = "I'm the string in `$sourceSetName` source set" + } + +} + +actual val sourceSetName: String = "jvmWithJava" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/kotlin/transitiveStory/midActual/sourceCalls/allTheCalls/INeedAllTheSourceSets.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/kotlin/transitiveStory/midActual/sourceCalls/allTheCalls/INeedAllTheSourceSets.kt new file mode 100644 index 00000000000..96aa350ea95 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/kotlin/transitiveStory/midActual/sourceCalls/allTheCalls/INeedAllTheSourceSets.kt @@ -0,0 +1,43 @@ +package transitiveStory.midActual.sourceCalls.allTheCalls + + +import transitiveStory.apiJvm.beginning.KotlinApiContainer +import transitiveStory.apiJvm.jbeginning.JavaApiContainer +import transitiveStory.bottomActual.apiCall.Jvm18JApiInheritor +import transitiveStory.bottomActual.apiCall.Jvm18KApiInheritor +import transitiveStory.bottomActual.mppBeginning.BottomActualDeclarations +import transitiveStory.bottomActual.mppBeginning.regularTLfunInTheBottomActualCommmon +import transitiveStory.bottomActual.intermediateSrc.* +import transitiveStory.bottomActual.jApiCall.JApiCallerInJVM18 + +class INeedAllTheSourceSets { + // ========= api calls ========== + // java + val jApiOne = JavaApiContainer() + + // kotlin + val kApiOne = KotlinApiContainer() + + // ========= mpp-bottom-actual calls ========== + // common source set + val interCallOne = regularTLfunInTheBottomActualCommmon("Some string from `mpp-mid-actual` module") + val interCallTwo = BottomActualDeclarations.inTheCompanionOfBottomActualDeclarations + val interCallThree = BottomActualDeclarations().simpleVal + + // intermediate source set + val interCallFour = InBottomActualIntermediate().p + val interCallFive = IntermediateMPPClassInBottomActual() + + // ========= jvm18 source set (attempt to) ========== + // java + val interCallSix = JApiCallerInJVM18() + + // kotlin + val interCallSeven = Jvm18KApiInheritor() + val interCallEight = Jvm18JApiInheritor() + val interCallNine = IntermediateMPPClassInBottomActual() +} + + +// experiments with intermod inheritance +class BottomActualCommonInheritorInJVM : BottomActualDeclarations() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/kotlin/transitiveStory/midActual/sourceCalls/intemediateCall/BottomActualMPPInheritor.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/kotlin/transitiveStory/midActual/sourceCalls/intemediateCall/BottomActualMPPInheritor.kt new file mode 100644 index 00000000000..9a332ba359e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/kotlin/transitiveStory/midActual/sourceCalls/intemediateCall/BottomActualMPPInheritor.kt @@ -0,0 +1,5 @@ +package transitiveStory.midActual.sourceCalls.intemediateCall + +import transitiveStory.bottomActual.mppBeginning.BottomActualDeclarations + +actual class BottomActualMPPInheritor : BottomActualDeclarations() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/kotlin/transitiveStory/midActual/sourceCalls/intemediateInheritorCall/TheCall.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/kotlin/transitiveStory/midActual/sourceCalls/intemediateInheritorCall/TheCall.kt new file mode 100644 index 00000000000..2241bf47f7d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaMain/kotlin/transitiveStory/midActual/sourceCalls/intemediateInheritorCall/TheCall.kt @@ -0,0 +1,7 @@ +package transitiveStory.midActual.sourceCalls.intemediateInheritorCall + +import transitiveStory.midActual.sourceCalls.intemediateCall.BottomActualCommonInheritor +import transitiveStory.midActual.sourceCalls.intemediateCall.BottomActualMPPInheritor + +val t123 = BottomActualCommonInheritor() +val t122 = BottomActualMPPInheritor() \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaTest/java/transitiveStory/midActual/platform/jtest/smokeTest/MidActualPlatformJTest.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaTest/java/transitiveStory/midActual/platform/jtest/smokeTest/MidActualPlatformJTest.java new file mode 100644 index 00000000000..7e86e0e738b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaTest/java/transitiveStory/midActual/platform/jtest/smokeTest/MidActualPlatformJTest.java @@ -0,0 +1,23 @@ +package transitiveStory.midActual.platform.jtest.smokeTest; + +import transitiveStory.apiJvm.beginning.KotlinApiContainer; +import transitiveStory.apiJvm.jbeginning.JavaApiContainer; +import transitiveStory.bottomActual.intermediateSrc.InBottomActualIntermediate; +import transitiveStory.bottomActual.intermediateSrc.IntermediateMPPClassInBottomActual; + +public class MidActualPlatformJTest { + // ================ api ================= + // java + // JClassForTheSmokeTestFromApi jClassForTheSmokeTestFromApi = new JClassForTheSmokeTestFromApi(); + JavaApiContainer javaApiContainer = new JavaApiContainer(); + + // kotlin + // ForTheSmokeTestFromApi forTheSmokeTestFromApi = new ForTheSmokeTestFromApi(); + KotlinApiContainer kotlinApiContainer = new KotlinApiContainer(); + + // ================ intermediate src of this module ================= + InBottomActualIntermediate inBottomActualIntermediate = new InBottomActualIntermediate(); + + // ================ jvm18Main ================= + IntermediateMPPClassInBottomActual intermediateMPPClassInBottomActual = new IntermediateMPPClassInBottomActual(); +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaiOSMain/kotlin/transitiveStory/midActual/sourceCalls/intemediateCall/SecondModCaller.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaiOSMain/kotlin/transitiveStory/midActual/sourceCalls/intemediateCall/SecondModCaller.kt new file mode 100644 index 00000000000..28fc7b02eec --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaiOSMain/kotlin/transitiveStory/midActual/sourceCalls/intemediateCall/SecondModCaller.kt @@ -0,0 +1,28 @@ +package transitiveStory.midActual.sourceCalls.intemediateCall + +import transitiveStory.bottomActual.mppBeginning.BottomActualDeclarations +import transitiveStory.bottomActual.mppBeginning.regularTLfunInTheBottomActualCommmon + +// https://youtrack.jetbrains.com/issue/KT-33731 +import transitiveStory.bottomActual.intermediateSrc.* + +class SecondModCaller { + // ========= mpp-bottom-actual calls ========== + // common source set + val interCallOne = regularTLfunInTheBottomActualCommmon("Some string from `mpp-mid-actual` module") + val interCallTwo = BottomActualDeclarations.inTheCompanionOfBottomActualDeclarations + val interCallThree = BottomActualDeclarations().simpleVal + + // https://youtrack.jetbrains.com/issue/KT-33731 + // intermediate source set + val interCallFour = InBottomActualIntermediate().p + val interCallFive = IntermediateMPPClassInBottomActual() + + // kotlin + val interCallNine = IntermediateMPPClassInBottomActual() +} + + +// experiments with intermod inheritance +class BottomActualCommonInheritor : BottomActualDeclarations() +expect class BottomActualMPPInheritor : BottomActualDeclarations diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaiOSTest/kotlin/transitiveStory/midActual/common/test/smokeTest/TCallerFromCommMidActual.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaiOSTest/kotlin/transitiveStory/midActual/common/test/smokeTest/TCallerFromCommMidActual.kt new file mode 100644 index 00000000000..41372d2e769 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/bottom-mpp/src/jvmWithJavaiOSTest/kotlin/transitiveStory/midActual/common/test/smokeTest/TCallerFromCommMidActual.kt @@ -0,0 +1,15 @@ +package transitiveStory.midActual.common.test.smokeTest + +// https://youtrack.jetbrains.com/issue/KT-33731 +import transitiveStory.bottomActual.intermediateSrc.InBottomActualIntermediate +// import transitiveStory.bottomActual.intermediateSrc.IntermediateMPPClassInBottomActual + +class TCallerFromCommMidActual { + // ================ intermediate src of mpp-bottom-actual module ================= + internal var inBottomActualIntermediate = + InBottomActualIntermediate() + +/* // ================ jvm18Main ================= + internal var intermediateMPPClassInBottomActual = + IntermediateMPPClassInBottomActual()*/ +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/build.gradle new file mode 100644 index 00000000000..7225b8d7b6a --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/build.gradle @@ -0,0 +1,21 @@ +buildscript { + repositories { + mavenLocal() + mavenCentral() + gradlePluginPortal() + } + + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } + +} + +allprojects { + repositories { + mavenLocal() + mavenCentral() + gradlePluginPortal() + } +} + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/gradle.properties new file mode 100644 index 00000000000..d3e2ee7026f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/gradle.properties @@ -0,0 +1,4 @@ +publishing_version = 1.0-5.3-1.6.255-SNAPSHOT + +kotlin.mpp.enableGranularSourceSetsMetadata=true +kotlin.native.enableDependencyPropagation=false \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/build.gradle new file mode 100644 index 00000000000..63063eb07cc --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/build.gradle @@ -0,0 +1,80 @@ +group 'org.jetbrains.qa.combompp' +version publishing_version + +apply plugin: 'kotlin-multiplatform' +apply plugin: 'maven-publish' + +kotlin { + js() { + browser() + nodejs() + } + linuxX64("linux") + macosX64("macos") + ios() + jvm() + + sourceSets { + commonMain { + dependencies { } + } + commonTest { + dependencies { } + } + + // creating a diamond + jsLinuxMain { + dependsOn commonMain + dependencies { + api project(":top-mpp") + } + } + + jvmMacosMain { + dependsOn commonMain + } + + macosLinuxMain { + dependsOn commonMain + } + + iosMacosMain { + dependsOn commonMain + } + + iosX64Main { + dependsOn iosMacosMain + } + jsMain { + dependsOn jsLinuxMain + dependencies { } + } + jsTest { + dependencies { } + } + jvmMain { + dependsOn jvmMacosMain + dependencies { } + } + jvmTest { + dependencies { } + } + linuxMain { + dependsOn jsLinuxMain + dependsOn macosLinuxMain + dependencies {} + } + linuxTest { + dependencies { } + } + macosMain { + dependsOn jvmMacosMain + dependsOn macosLinuxMain + dependsOn iosMacosMain + + } + macosTest { + dependencies { } + } + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/iosMacosMain/kotlin/callingCommonized/TheCallerIniOSMacos.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/iosMacosMain/kotlin/callingCommonized/TheCallerIniOSMacos.kt new file mode 100644 index 00000000000..9720730a119 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/iosMacosMain/kotlin/callingCommonized/TheCallerIniOSMacos.kt @@ -0,0 +1,30 @@ +// !CHECK_HIGHLIGHTING +package callingCommonized + +import kotlinx.cinterop.NativePtr +import platform.Accelerate.* +import platform.CoreFoundation.CFAllocatorGetTypeID +import platform.CoreFoundation.CFTypeID +import platform.CoreFoundation.__CFByteOrder +import platform.darwin.NSObject + +class TheCallerIniOSMacos(p: NativePtr) { + val eVal: CBLAS_TRANSPOSE = AtlasConj + + val eval2 = BNNSActivationFunctionAbs + + fun someWrapper() { + CFAllocatorGetTypeID() + } + + val enumCall: kotlinx.cinterop.CEnum = __CFByteOrder.CFByteOrderLittleEndian +} + + expect class WCommonizedCalls(pc: __CLPK_real) { + + val eClass: NSObject // = ACAccount + val enumInteroped: kotlinx.cinterop.CEnum +} + +class CallMyFields { +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/iosTest/kotlin/verification.commonizer/SomethingInTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/iosTest/kotlin/verification.commonizer/SomethingInTest.kt new file mode 100644 index 00000000000..53030d611a0 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/iosTest/kotlin/verification.commonizer/SomethingInTest.kt @@ -0,0 +1,15 @@ +// !CHECK_HIGHLIGHTING +package verification.commonizer + +import platform.Foundation.NSArgumentDomain +import kotlin.test.Test +import kotlin.test.assertEquals + +class SomethingInTest { + @Test + fun someTestInSharediOS() { + val callingComm = NSArgumentDomain + println(callingComm) + assertEquals(42, 42) + } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/iosX64Main/kotlin/callingCommonized/WCommonizedCalls.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/iosX64Main/kotlin/callingCommonized/WCommonizedCalls.kt new file mode 100644 index 00000000000..8fac4111941 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/iosX64Main/kotlin/callingCommonized/WCommonizedCalls.kt @@ -0,0 +1,33 @@ +// !CHECK_HIGHLIGHTING +package callingCommonized + +import kotlinx.cinterop.CEnum +import platform.Accelerate.AtlasConj +import platform.Accelerate.CBLAS_TRANSPOSE +import platform.Accelerate.FFTDirection +import platform.Accelerate.__CLPK_real +import platform.Accounts.ACAccount +import platform.CoreFoundation.CFAllocatorGetTypeID +import platform.CoreFoundation.CFTypeID +import platform.CoreFoundation.__CFByteOrder +import platform.Foundation.NSLog +import platform.darwin.ABDAY_1 +import platform.darwin.NSObject +import platform.darwin.PLATFORM_IOS +import platform.posix.DBL_MIN + +actual class WCommonizedCalls actual constructor(pc: __CLPK_real) { + + val eFunCall: CFTypeID = CFAllocatorGetTypeID() // create actual doesn't work because of this + actual val eClass: NSObject = ACAccount() + actual val enumInteroped: CEnum = __CFByteOrder.CFByteOrderLittleEndian + + val somel = NSLog("") + + val dfg = DBL_MIN + + val device get() = platform.UIKit.UIDevice.currentDevice + + val eVal: CBLAS_TRANSPOSE = AtlasConj + +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/jvmMacosMain/kotlin/commonizerVerification/Another.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/jvmMacosMain/kotlin/commonizerVerification/Another.kt new file mode 100644 index 00000000000..5908b0e14e2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/jvmMacosMain/kotlin/commonizerVerification/Another.kt @@ -0,0 +1,9 @@ +package commonizerVerification + +import kotlin.jvm.JvmField + +class Another { + + @JvmField + val dsf = 324 +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/macosLinuxMain/kotlin/callingCommonized/Calls.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/macosLinuxMain/kotlin/callingCommonized/Calls.kt new file mode 100644 index 00000000000..71261e63008 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/macosLinuxMain/kotlin/callingCommonized/Calls.kt @@ -0,0 +1,9 @@ +// !CHECK_HIGHLIGHTING +package callingCommonized + +import platform.posix.ns_r_notauth + +class Calls145t431 { + val theCall = ns_r_notauth + +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/macosMain/kotlin/callingCommonized/WCommonizedCalls.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/macosMain/kotlin/callingCommonized/WCommonizedCalls.kt new file mode 100644 index 00000000000..921629d8215 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/mpp-additional/src/macosMain/kotlin/callingCommonized/WCommonizedCalls.kt @@ -0,0 +1,26 @@ +// !CHECK_HIGHLIGHTING +package callingCommonized + +import kotlinx.cinterop.CEnum +import platform.Accelerate.AtlasConj +import platform.Accelerate.CBLAS_TRANSPOSE +import platform.Accelerate.__CLPK_real +import platform.CoreFoundation.CFAllocatorGetTypeID +import platform.CoreFoundation.CFTypeID +import platform.darwin.NSObject +import platform.posix.ns_r_notauth + +actual class WCommonizedCalls actual constructor(pc: __CLPK_real) { + + val eFunCall: CFTypeID = CFAllocatorGetTypeID() + actual val eClass: NSObject + get() = TODO("Not yet implemented") + actual val enumInteroped: CEnum + get() = TODO("Not yet implemented") + + val eVal: CBLAS_TRANSPOSE = AtlasConj + + val theCall = ns_r_notauth + + +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/build.gradle new file mode 100644 index 00000000000..d7ec24f47b4 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/build.gradle @@ -0,0 +1,38 @@ +group 'org.jetbrains.qa.combompp' +version publishing_version + +apply plugin: 'java' +apply plugin: 'kotlin' +//apply plugin: "application" +apply plugin: 'maven-publish' + + + +dependencies { + api project(":bottom-mpp") +} + +[compileKotlin, compileTestKotlin]*.configure { + kotlinOptions { + kotlinOptions.jvmTarget = "1.8" + freeCompilerArgs += ["-Xprogressive", "-XXLanguage:+NewInference", "-XXLanguage:+SamConversionForKotlinFunctions"] + } +} + +publishing { + publications { + mavenJava(MavenPublication) { + groupId 'org.jetbrains.qa.combompp' + artifactId 'plain-jvm' + version publishing_version + from components.java + } + } +} + + +def complexLibAttribute = Attribute.of('org.jetbrains.qa.complexlib', String) + +configurations.all { + attributes { attribute(complexLibAttribute, 'jvmWithJava') } +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/src/main/java/calls/sourceCalls/TheVeryTransitiveJava.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/src/main/java/calls/sourceCalls/TheVeryTransitiveJava.java new file mode 100644 index 00000000000..5886e6d7f19 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/src/main/java/calls/sourceCalls/TheVeryTransitiveJava.java @@ -0,0 +1,64 @@ +package calls.sourceCalls; + +import calls.transitive_calls.sourceCalls.TheVeryTransitiveStory; +import transitiveStory.apiJvm.beginning.KotlinApiContainer; +import transitiveStory.apiJvm.jbeginning.JavaApiContainer; +import transitiveStory.bottomActual.apiCall.Jvm18JApiInheritor; +import transitiveStory.bottomActual.apiCall.Jvm18KApiInheritor; +import transitiveStory.bottomActual.intermediateSrc.InBottomActualIntermediate; +import transitiveStory.bottomActual.jApiCall.JApiCallerInJVM18; +import transitiveStory.bottomActual.mppBeginning.BottomActualDeclarations; +import transitiveStory.midActual.allTheCallsMirror.TheSameCallsButJava; +import transitiveStory.midActual.commonSource.SomeMPPInTheCommon; +import transitiveStory.midActual.sourceCalls.allTheCalls.INeedAllTheSourceSets; +import transitiveStory.midActual.sourceCalls.intemediateCall.SecondModCaller; +// import transitiveStory.bottomActual.mppBeginning.BottomActualDeclarations; +import static transitiveStory.bottomActual.mppBeginning.BottomActualDeclarationsKt.regularTLfunInTheBottomActualCommmon; +import static transitiveStory.midActual.commonSource.SomethinInTheCommonKt.regularTLfunInTheMidActualCommmon; + +public class TheVeryTransitiveJava extends BottomActualDeclarations { + // ========= api calls ========== + // java + JavaApiContainer javaApiContainer = new JavaApiContainer(); + + // kotlin + KotlinApiContainer kotlinApiContainer = new KotlinApiContainer(); + + // ========= mpp-bottom-actual calls ========== + // common source set + String regularTLfunInTheBottomActualCall = regularTLfunInTheBottomActualCommmon("Some string from `plain-jvm` module, java source set"); + String inTheCompanionOfBottomActual = BottomActualDeclarations.Compainon.getInTheCompanionOfBottomActualDeclarations(); + + // intermediate source set + int badSimple = new BottomActualDeclarations().getSimpleVal(); + int jIntermBottomActualCall = new InBottomActualIntermediate().getP(); + + // ========= jvm18 source set of `mpp-bottom-actual` ========== + // java + JApiCallerInJVM18 jApiCallerInJVM18 = new JApiCallerInJVM18(); + + // kotlin + Jvm18KApiInheritor jvm18KApiInheritor = new Jvm18KApiInheritor(); + Jvm18JApiInheritor jvm18JApiInheritor = new Jvm18JApiInheritor(); + + // ========= mpp-mid-actual calls ========== + // common source set + String regTLfunInTeMidCommon = regularTLfunInTheMidActualCommmon("The message from `plain-jvm` module"); + int platformMppCall = new SomeMPPInTheCommon().getSimpleVal(); + + // intermediate source set + SecondModCaller secondModCaller = new SecondModCaller(); + + // ========= jvmWithJava source set of `mpp-mid-actual` ========== + // java + TheSameCallsButJava theSameCallsButJava = new TheSameCallsButJava(); + + // kotlin + INeedAllTheSourceSets iNeedAllTheSourceSets = new INeedAllTheSourceSets(); + + public static void main(String[] args) { + System.out.println("Some basic printing from Java of `plain-jvm`: `" + new TheVeryTransitiveStory() + "`"); + } +} + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/src/main/kotlin/calls/transitive_calls/sourceCalls/TheVeryTransitiveStory.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/src/main/kotlin/calls/transitive_calls/sourceCalls/TheVeryTransitiveStory.kt new file mode 100644 index 00000000000..07f3447924e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/src/main/kotlin/calls/transitive_calls/sourceCalls/TheVeryTransitiveStory.kt @@ -0,0 +1,72 @@ +package calls.transitive_calls.sourceCalls + +import transitiveStory.apiJvm.beginning.KotlinApiContainer +import transitiveStory.apiJvm.jbeginning.JavaApiContainer +import transitiveStory.bottomActual.apiCall.Jvm18JApiInheritor +import transitiveStory.bottomActual.apiCall.Jvm18KApiInheritor +import transitiveStory.bottomActual.intermediateSrc.InBottomActualIntermediate +import transitiveStory.bottomActual.intermediateSrc.IntermediateMPPClassInBottomActual +import transitiveStory.bottomActual.jApiCall.JApiCallerInJVM18 +import transitiveStory.bottomActual.mppBeginning.BottomActualDeclarations +import transitiveStory.bottomActual.mppBeginning.regularTLfunInTheBottomActualCommmon +import transitiveStory.midActual.allTheCallsMirror.TheSameCallsButJava +import transitiveStory.midActual.commonSource.SomeMPPInTheCommon +import transitiveStory.midActual.commonSource.regularTLfunInTheMidActualCommmon +import transitiveStory.midActual.sourceCalls.allTheCalls.INeedAllTheSourceSets +import transitiveStory.midActual.sourceCalls.intemediateCall.SecondModCaller + +class TheVeryTransitiveStory { + // ========= api calls ========== + // java + val jApiOne = JavaApiContainer() + + // kotlin + val kApiOne = KotlinApiContainer() + + // ========= mpp-bottom-actual calls ========== + // common source set + val interCallOne = regularTLfunInTheBottomActualCommmon("Some string from `mpp-mid-actual` module") + val interCallTwo = BottomActualDeclarations.inTheCompanionOfBottomActualDeclarations + val interCallThree = BottomActualDeclarations().simpleVal + + // intermediate source set + val interCallFour = InBottomActualIntermediate().p + val interCallFive = IntermediateMPPClassInBottomActual() + + // ========= jvm18 source set of `mpp-bottom-actual` ========== + // java + val interCallSix = JApiCallerInJVM18() + + // kotlin + val interCallSeven = Jvm18KApiInheritor() + val interCallEight = Jvm18JApiInheritor() + val interCallNine = IntermediateMPPClassInBottomActual() + + // ========= mpp-mid-actual calls ========== + // common source set + val midCommonCallOne = regularTLfunInTheMidActualCommmon("The message from `plain-jvm` module") + val midCommonCallTwo = SomeMPPInTheCommon().simpleVal + + // intermediate source set + val midIntermediateCall = SecondModCaller() + class TransitiveInheritor : BottomActualDeclarations() + + // ========= jvmWithJava source set of `mpp-mid-actual` ========== + // java + val midEndCallOne = TheSameCallsButJava() + + // kotlin + val midEndCallTwo = INeedAllTheSourceSets() + +} + +fun main() { + val arg = TheVeryTransitiveStory() + println("Test printing: `${arg.jApiOne}`; \n `${arg.kApiOne}`") +} + +class SomeWComp { + companion object { + val callMe = "sfjn" + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/src/main/kotlin/playground/Foo.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/src/main/kotlin/playground/Foo.kt new file mode 100644 index 00000000000..495e8f7182b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/src/main/kotlin/playground/Foo.kt @@ -0,0 +1,3 @@ +package playground + +//inline class Foo(val i: Int) \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/src/test/kotlin/kt33573tt/SomeEP.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/src/test/kotlin/kt33573tt/SomeEP.kt new file mode 100644 index 00000000000..826aa893e95 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/plain-jvm/src/test/kotlin/kt33573tt/SomeEP.kt @@ -0,0 +1,5 @@ +package kt33573tt + +class SomeEPTest { + +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/settings.gradle new file mode 100644 index 00000000000..275d71ca130 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/settings.gradle @@ -0,0 +1,9 @@ +pluginManagement { + repositories { + mavenLocal() + mavenCentral() + gradlePluginPortal() + } +} +rootProject.name = 'multimod-hmpp' +include ':top-mpp', ':bottom-mpp', ':mpp-additional', ':api-jvm', ':plain-jvm' \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/build.gradle new file mode 100644 index 00000000000..ca74ad2614d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/build.gradle @@ -0,0 +1,183 @@ +apply plugin: 'kotlin-multiplatform' +apply plugin: 'maven-publish' + +group 'org.jetbrains.qa.combompp' +version publishing_version + +buildscript { + repositories { + mavenLocal() + mavenCentral() + gradlePluginPortal() + } +} + +repositories { + mavenLocal() + mavenCentral() + gradlePluginPortal() +} + +def complexLibAttribute = Attribute.of('org.jetbrains.qa.complexlib', String) + +kotlin { + jvm("jvm18") { + withJava() + attributes { attribute(complexLibAttribute, 'jvmWithJava') } + + compilations.all { + kotlinOptions.jvmTarget = "1.8" + } + } + js() { + nodejs() + } + + linuxX64('linux') { + // Binary configuration + binaries { + // Creating static library with a custom name. + staticLib('customNameForLinuxLib') { + outputDirectory = file("customNameForLinuxLib") // outputDir is a `val` property. + linkTask.destinationDir = file("customNameForLinuxLib") + } + } + } + + macosX64('macos') { + // Binary configuration + binaries { + // Creating static library with a custom name. + staticLib('customNameForMacosLib') { + outputDirectory = file("customNameForMacosLib") // outputDir is a `val` property. + linkTask.destinationDir = file("customNameForMacosLib") + } + } + } + + iosX64("dummyiOS") { + binaries { + // KT-29395 fix + framework { + outputDirectory = file("fooDummyiOS") // outputDir is a `val` property. + linkTask.destinationDir = file("fooDummyiOS") + } + } + } + + // inline classes are enabled below + targets.all { + compilations.all { + kotlinOptions { + freeCompilerArgs += ["-Xprogressive", "-XXLanguage:+NewInference", "-XXLanguage:+SamConversionForKotlinFunctions", "-Xuse-experimental=kotlin.ExperimentalMultiplatform"] + } + } + } + + sourceSets { + + commonMain { + dependencies { } + } + commonTest { + dependencies { } + } + + // intermediate between commonMain and jsJvm18Main + kt27816Main { + dependsOn commonMain + } + + // creating a diamond + jsJvm18iOSMain { + kotlin.srcDir('src/jsJvm18iOSMain/cstmSrc') + + // dependsOn commonMain + dependsOn kt27816Main // an additional source set on the way to commonMain + dependencies { + //api "com.example:tmp-new-mpp-0312:0.0.1" + } + } + + jsJvm18iOSTest { + dependsOn commonTest + dependencies { } + } + jsLinuxMain { + dependsOn commonMain + } + + jsLinuxTest { + dependsOn commonTest + } + + // setting up the targets source sets + jvm18Main { + kotlin.srcDir('src/jvm18Main/customSrc') + + dependencies { + // not in `common`, please: https://youtrack.jetbrains.com/issue/KT-28537 + api project(":api-jvm") + } + + // connecting to the diamond + dependsOn jsJvm18iOSMain + } + jvm18Test { + dependencies { } + + // connecting to the diamond + dependsOn jsJvm18iOSTest + } + + jsMain { + dependencies { + npm("left-pad", "*") + } + + // connecting to the diamond + dependsOn jsJvm18iOSMain + dependsOn jsLinuxMain + } + jsTest { + dependencies { + npm("left-pad", "*") + } + + // connecting to the diamond + dependsOn jsJvm18iOSTest + dependsOn jsLinuxTest + } + linuxMain { + dependencies { } + + // connecting to the diamond + dependsOn jsLinuxMain + } + linuxTest { + dependencies { } + + // connecting to the diamond + dependsOn jsLinuxTest + } + macosMain { + dependencies { } + } + macosTest { + dependencies { } + } + dummyiOSMain { + // connecting to the diamond + dependsOn jsJvm18iOSMain + dependencies { } + } + dummyiOSTest { + dependsOn jsJvm18iOSTest + + dependencies { } + } + } +} +kotlin.sourceSets.all { + it.languageSettings.enableLanguageFeature("InlineClasses") +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/commonMain/kotlin/transitiveStory/bottomActual/callingApi/BottActualApiCaller.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/commonMain/kotlin/transitiveStory/bottomActual/callingApi/BottActualApiCaller.kt new file mode 100644 index 00000000000..245a6da8eb7 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/commonMain/kotlin/transitiveStory/bottomActual/callingApi/BottActualApiCaller.kt @@ -0,0 +1,6 @@ +package transitiveStory.bottomActual.callingApi + +/* +fun bottActualApiCaller(k: KotlinApiContainer, s: JavaApiContainer) { + // val first = privateKotlinDeclaration +}*/ diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/commonMain/kotlin/transitiveStory/bottomActual/mppBeginning/BottomActualDeclarations.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/commonMain/kotlin/transitiveStory/bottomActual/mppBeginning/BottomActualDeclarations.kt new file mode 100644 index 00000000000..7ceed1d57f8 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/commonMain/kotlin/transitiveStory/bottomActual/mppBeginning/BottomActualDeclarations.kt @@ -0,0 +1,50 @@ +package transitiveStory.bottomActual.mppBeginning + +val moduleName = "top-mpp" +val commonInt = 42 +expect val sourceSetName: String + +expect open class BottomActualDeclarations() { + val simpleVal: Int + + companion object Compainon { + val inTheCompanionOfBottomActualDeclarations: String + } +} + +fun regularTLfunInTheBottomActualCommmon(s: String): String { + return "I'm a function at the top level of a file in `commonMain` source set of module $moduleName." + + "This is the message I've got: \n`$s`" +} + +// shouldn't be resolved +/* +fun bottActualApiCaller(k: KotlinApiContainer, s: JavaApiContainer) { + // val first = privateKotlinDeclaration +}*/ + +internal val tlInternalInCommon = 42 + +// has a child in jsJvm18Main +open class Outer { + private val a = 1 + protected open val b = 2 + internal val c = 3 + val d = 4 // public by default + + protected class Nested { + public val e: Int = 5 + } +} + +// has a child in jsJvm18Main +expect open class MPOuter { + protected open val b: Int + internal val c: Int + val d: Int // public by default + + protected class MPNested { + public val e: Int + } +} + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/commonTest/kotlin/transitiveStory/bottomActual/test/smokeTest/BottomActualCaommonTestCallerToBeCalled.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/commonTest/kotlin/transitiveStory/bottomActual/test/smokeTest/BottomActualCaommonTestCallerToBeCalled.kt new file mode 100644 index 00000000000..897286efc14 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/commonTest/kotlin/transitiveStory/bottomActual/test/smokeTest/BottomActualCaommonTestCallerToBeCalled.kt @@ -0,0 +1,8 @@ +package transitiveStory.bottomActual.test.smokeTest + +import transitiveStory.bottomActual.mppBeginning.tlInternalInCommon + +class BottomActualCommonTestCallerToBeCalled { +// val apiCall = ForTheSmokeTest + val callingInternal = tlInternalInCommon +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/dummyiOSMain/kotlin/transitiveStory/bottomActual/intermediateSrc/IntermediateMPPClassInBottomActual.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/dummyiOSMain/kotlin/transitiveStory/bottomActual/intermediateSrc/IntermediateMPPClassInBottomActual.kt new file mode 100644 index 00000000000..07deb641dd2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/dummyiOSMain/kotlin/transitiveStory/bottomActual/intermediateSrc/IntermediateMPPClassInBottomActual.kt @@ -0,0 +1,3 @@ +package transitiveStory.bottomActual.intermediateSrc + +actual class IntermediateMPPClassInBottomActual \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/dummyiOSMain/kotlin/transitiveStory/bottomActual/mppBeginning/sourceSetName.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/dummyiOSMain/kotlin/transitiveStory/bottomActual/mppBeginning/sourceSetName.kt new file mode 100644 index 00000000000..c3d6ddd1f45 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/dummyiOSMain/kotlin/transitiveStory/bottomActual/mppBeginning/sourceSetName.kt @@ -0,0 +1,3 @@ +package transitiveStory.bottomActual.mppBeginning + +actual val sourceSetName: String = "dummyiOSMain" \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSMain/kotlin/forJsJvmOnly/SomethinJsJvmaSpecial.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSMain/kotlin/forJsJvmOnly/SomethinJsJvmaSpecial.kt new file mode 100644 index 00000000000..f08a0ad14f9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSMain/kotlin/forJsJvmOnly/SomethinJsJvmaSpecial.kt @@ -0,0 +1,10 @@ +package forJsJvmOnly + +actual class SomethinJsJvmaSpecial { +} + +expect class SomethinJsJvmaSpecial { +} + +expect class HavingActualNearby +actual class HavingActualNearby \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSMain/kotlin/transitiveStory/bottomActual/intermediateSrc/InBottomActualIntermediate.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSMain/kotlin/transitiveStory/bottomActual/intermediateSrc/InBottomActualIntermediate.kt new file mode 100644 index 00000000000..1231ceb26ae --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSMain/kotlin/transitiveStory/bottomActual/intermediateSrc/InBottomActualIntermediate.kt @@ -0,0 +1,37 @@ +package transitiveStory.bottomActual.intermediateSrc + +import transitiveStory.bottomActual.mppBeginning.MPOuter +import transitiveStory.bottomActual.mppBeginning.Outer +import transitiveStory.bottomActual.mppBeginning.tlInternalInCommon + +//import transitiveStory.bottomActual.mppBeginning.tlInternalInCommon + +class InBottomActualIntermediate { + val p = 42 + // https://youtrack.jetbrains.com/issue/KT-37264 + val callingInteral = tlInternalInCommon +} + +expect class IntermediateMPPClassInBottomActual() + + +class Subclass : Outer() { + // a is not visible + // b, c and d are visible + // Nested and e are visible + + override val b = 5 // 'b' is protected +} + +class ChildOfCommonInShared : Outer() { + override val b: Int + get() = super.b + 243 +// val callAlso = super.c // internal in Outer + + private val other = Nested() +} + +class ChildOfMPOuterInShared : MPOuter() { + private val sav = MPNested() +} + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSMain/kotlin/transitiveStory/bottomActual/mppBeginning/BottomActualDeclarations.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSMain/kotlin/transitiveStory/bottomActual/mppBeginning/BottomActualDeclarations.kt new file mode 100644 index 00000000000..86bf25e85f6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSMain/kotlin/transitiveStory/bottomActual/mppBeginning/BottomActualDeclarations.kt @@ -0,0 +1,11 @@ +package transitiveStory.bottomActual.mppBeginning + +actual open class BottomActualDeclarations { + actual val simpleVal: Int = commonInt + + actual companion object Compainon { + actual val inTheCompanionOfBottomActualDeclarations: String = + "I'm a string from the companion object of `$this` in `$sourceSetName` module `$moduleName`" + } +} + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSMain/kotlin/transitiveStory/bottomActual/mppBeginning/MPOuter.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSMain/kotlin/transitiveStory/bottomActual/mppBeginning/MPOuter.kt new file mode 100644 index 00000000000..4ad8081d96d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSMain/kotlin/transitiveStory/bottomActual/mppBeginning/MPOuter.kt @@ -0,0 +1,13 @@ +package transitiveStory.bottomActual.mppBeginning + +// has a child in jsJvm18Main +actual open class MPOuter { + protected actual open val b: Int = 2565 + internal actual val c: Int = 2456 + actual val d: Int = 324 + + protected actual class MPNested { + actual val e: Int = 245 + } + +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSTest/kotlin/transitiveStory/BottomActualIntermTestCallerToBeCalled.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSTest/kotlin/transitiveStory/BottomActualIntermTestCallerToBeCalled.kt new file mode 100644 index 00000000000..b3c55bdb5d7 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSTest/kotlin/transitiveStory/BottomActualIntermTestCallerToBeCalled.kt @@ -0,0 +1,4 @@ +package transitiveStory + +class BottomActualIntermTestCallerToBeCalled { +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSTest/kotlin/transitiveStory/bottomActual/mid/jtest/InapropriateCall.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSTest/kotlin/transitiveStory/bottomActual/mid/jtest/InapropriateCall.kt new file mode 100644 index 00000000000..f5a89729c02 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsJvm18iOSTest/kotlin/transitiveStory/bottomActual/mid/jtest/InapropriateCall.kt @@ -0,0 +1,7 @@ +package transitiveStory.bottomActual.mid.jtest + +import transitiveStory.bottomActual.mppBeginning.tlInternalInCommon + +// val theInapropr = KotlinApiContainer() + +val iShouldntFail = tlInternalInCommon diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsMain/kotlin/transitiveStory/bottomActual/intermediateSrc/IntermediateMPPClassInBottomActual.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsMain/kotlin/transitiveStory/bottomActual/intermediateSrc/IntermediateMPPClassInBottomActual.kt new file mode 100644 index 00000000000..07deb641dd2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsMain/kotlin/transitiveStory/bottomActual/intermediateSrc/IntermediateMPPClassInBottomActual.kt @@ -0,0 +1,3 @@ +package transitiveStory.bottomActual.intermediateSrc + +actual class IntermediateMPPClassInBottomActual \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsMain/kotlin/transitiveStory/bottomActual/mppBeginning/sourceSetName.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsMain/kotlin/transitiveStory/bottomActual/mppBeginning/sourceSetName.kt new file mode 100644 index 00000000000..748ca01137c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jsMain/kotlin/transitiveStory/bottomActual/mppBeginning/sourceSetName.kt @@ -0,0 +1,3 @@ +package transitiveStory.bottomActual.mppBeginning + +actual val sourceSetName: String = "jsMain" \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Main/java/transitiveStory/bottomActual/jApiCall/JApiCallerInJVM18.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Main/java/transitiveStory/bottomActual/jApiCall/JApiCallerInJVM18.java new file mode 100644 index 00000000000..94322db639c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Main/java/transitiveStory/bottomActual/jApiCall/JApiCallerInJVM18.java @@ -0,0 +1,16 @@ +package transitiveStory.bottomActual.jApiCall; + +import transitiveStory.apiJvm.beginning.KotlinApiContainer; +import transitiveStory.apiJvm.jbeginning.JavaApiContainer; + +public class JApiCallerInJVM18 extends JavaApiContainer { + String protectedCall = protectedJavaDeclaration; + KotlinApiContainer kotlinApiContainer = new KotlinApiContainer(); + + void caller(JavaApiContainer j) { + String s1 = j.publicJavaDeclaration; + String s2 = publicStaticJavaDeclaration; + String s3 = kotlinApiContainer.getPublicKotlinDeclaration(); + //String s4 = kotlinApiContainer.getPackageVisibleKotlinDeclaration$api_jvm(); + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Main/kotlin/transitiveStory/bottomActual/apiCall/bottActualApiCaller.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Main/kotlin/transitiveStory/bottomActual/apiCall/bottActualApiCaller.kt new file mode 100644 index 00000000000..e0d35cfa54f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Main/kotlin/transitiveStory/bottomActual/apiCall/bottActualApiCaller.kt @@ -0,0 +1,44 @@ +package transitiveStory.bottomActual.apiCall + +import playground.moduleName +import transitiveStory.apiJvm.beginning.KotlinApiContainer +import transitiveStory.apiJvm.jbeginning.JavaApiContainer + +open class Jvm18JApiInheritor : JavaApiContainer() { + // override var protectedJavaDeclaration = "" + var callProtectedJavaDeclaration = protectedJavaDeclaration +} + +open class Jvm18KApiInheritor : KotlinApiContainer() { + public override val protectedKotlinDeclaration = + "I'm an overridden Kotlin string in `$this` from `" + moduleName + + "` and shall be never visible to the other modules except my subclasses." +} + +/** + * Some class which type is lately used in the function. + * + */ +open class FindMyDocumantationPlease + +/** + * A function using a class type placed right into the same file. + * + * @param f The parameter of the type under the investigation + * */ +fun iWantSomeDocumentationFromDokka(f: FindMyDocumantationPlease) {} + +fun bottActualApiCaller(k: KotlinApiContainer, s: JavaApiContainer, ij: Jvm18JApiInheritor, ik: Jvm18KApiInheritor) { + // val first = k.privateKotlinDeclaration + // val second = k.packageVisibleKotlinDeclaration + // val third = k.protectedKotlinDeclaration + val fourth = ik.protectedKotlinDeclaration + val fifth = k.publicKotlinDeclaration + val sixth = KotlinApiContainer.publicStaticKotlinDeclaration + + // val seventh = s.privateJavaDeclaration + // val eighth = s.packageVisibleJavaDeclaration + val ninth = s.publicJavaDeclaration + val tenth = JavaApiContainer.publicStaticJavaDeclaration + // val eleventh = ij.protectedJavaDeclaration +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Main/kotlin/transitiveStory/bottomActual/intermediateSrc/IntermediateMPPClassInBottomActual.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Main/kotlin/transitiveStory/bottomActual/intermediateSrc/IntermediateMPPClassInBottomActual.kt new file mode 100644 index 00000000000..07deb641dd2 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Main/kotlin/transitiveStory/bottomActual/intermediateSrc/IntermediateMPPClassInBottomActual.kt @@ -0,0 +1,3 @@ +package transitiveStory.bottomActual.intermediateSrc + +actual class IntermediateMPPClassInBottomActual \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Main/kotlin/transitiveStory/bottomActual/mppBeginning/sourceSetName.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Main/kotlin/transitiveStory/bottomActual/mppBeginning/sourceSetName.kt new file mode 100644 index 00000000000..0d09f8f8788 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Main/kotlin/transitiveStory/bottomActual/mppBeginning/sourceSetName.kt @@ -0,0 +1,3 @@ +package transitiveStory.bottomActual.mppBeginning + +actual val sourceSetName: String = "jvmMain" \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Test/java/transitiveStory/bottomActual/mid/jtest/smokeTest/BottmoActualPlatformJTest.java b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Test/java/transitiveStory/bottomActual/mid/jtest/smokeTest/BottmoActualPlatformJTest.java new file mode 100644 index 00000000000..45646a26655 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Test/java/transitiveStory/bottomActual/mid/jtest/smokeTest/BottmoActualPlatformJTest.java @@ -0,0 +1,23 @@ +package transitiveStory.bottomActual.mid.jtest.smokeTest; + +import transitiveStory.apiJvm.beginning.KotlinApiContainer; +import transitiveStory.apiJvm.jbeginning.JavaApiContainer; +import transitiveStory.bottomActual.intermediateSrc.InBottomActualIntermediate; +import transitiveStory.bottomActual.intermediateSrc.IntermediateMPPClassInBottomActual; + +public class BottmoActualPlatformJTest { + // ================ api ================= + // java + // JClassForTheSmokeTestFromApi jClassForTheSmokeTestFromApi = new JClassForTheSmokeTestFromApi(); + JavaApiContainer javaApiContainer = new JavaApiContainer(); + + // kotlin + // ForTheSmokeTestFromApi forTheSmokeTestFromApi = new ForTheSmokeTestFromApi(); + KotlinApiContainer kotlinApiContainer = new KotlinApiContainer(); + + // ================ intermediate src of this module ================= + InBottomActualIntermediate inBottomActualIntermediate = new InBottomActualIntermediate(); + + // ================ jvm18Main ================= + IntermediateMPPClassInBottomActual intermediateMPPClassInBottomActual = new IntermediateMPPClassInBottomActual(); +} diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Test/kotlin/transitiveStory/bottomActual/mid/jtest/smokeTest/BottmoActualPlatformKTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Test/kotlin/transitiveStory/bottomActual/mid/jtest/smokeTest/BottmoActualPlatformKTest.kt new file mode 100644 index 00000000000..a872f9c62d6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/jvm18Test/kotlin/transitiveStory/bottomActual/mid/jtest/smokeTest/BottmoActualPlatformKTest.kt @@ -0,0 +1,27 @@ +package transitiveStory.bottomActual.mid.jtest.smokeTest + +import transitiveStory.apiJvm.beginning.KotlinApiContainer +import transitiveStory.apiJvm.jbeginning.JavaApiContainer +import transitiveStory.bottomActual.intermediateSrc.InBottomActualIntermediate +import transitiveStory.bottomActual.intermediateSrc.IntermediateMPPClassInBottomActual + +class BottmoActualPlatformKTest { + // ================ api ================= + // java + // JClassForTheSmokeTestFromApi jClassForTheSmokeTestFromApi = new JClassForTheSmokeTestFromApi(); + internal var javaApiContainer = + JavaApiContainer() + + // kotlin + // ForTheSmokeTestFromApi forTheSmokeTestFromApi = new ForTheSmokeTestFromApi(); + internal var kotlinApiContainer = + KotlinApiContainer() + + // ================ intermediate src of this module ================= + internal var inBottomActualIntermediate = + InBottomActualIntermediate() + + // ================ jvm18Main ================= + internal var intermediateMPPClassInBottomActual = + IntermediateMPPClassInBottomActual() +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/linuxMain/kotlin/transitiveStory/bottomActual/mppBeginning/BottomActualDeclarations.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/linuxMain/kotlin/transitiveStory/bottomActual/mppBeginning/BottomActualDeclarations.kt new file mode 100644 index 00000000000..909c059064b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/linuxMain/kotlin/transitiveStory/bottomActual/mppBeginning/BottomActualDeclarations.kt @@ -0,0 +1,12 @@ +package transitiveStory.bottomActual.mppBeginning + +actual open class BottomActualDeclarations { + actual val simpleVal: Int = commonInt + + actual companion object Compainon { + actual val inTheCompanionOfBottomActualDeclarations: String = + "I'm a string from the companion object of `$this` in `$sourceSetName` module `$moduleName`" + } +} + +actual val sourceSetName: String = "linuxMain" \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/linuxMain/kotlin/transitiveStory/bottomActual/mppBeginning/MPOuter.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/linuxMain/kotlin/transitiveStory/bottomActual/mppBeginning/MPOuter.kt new file mode 100644 index 00000000000..342db0470c9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/linuxMain/kotlin/transitiveStory/bottomActual/mppBeginning/MPOuter.kt @@ -0,0 +1,11 @@ +package transitiveStory.bottomActual.mppBeginning + +actual open class MPOuter { + protected actual open val b: Int = 65 + internal actual val c: Int = 235 + actual val d: Int = 235 + + protected actual class MPNested { + actual val e: Int = 2452 + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/macosMain/kotlin/transitiveStory/bottomActual/mppBeginning/BottomActualDeclarations.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/macosMain/kotlin/transitiveStory/bottomActual/mppBeginning/BottomActualDeclarations.kt new file mode 100644 index 00000000000..023cb927e39 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/hierarchical-mpp-multi-modules/top-mpp/src/macosMain/kotlin/transitiveStory/bottomActual/mppBeginning/BottomActualDeclarations.kt @@ -0,0 +1,35 @@ +package transitiveStory.bottomActual.mppBeginning + +actual open class BottomActualDeclarations { + actual val simpleVal: Int = commonInt + + actual companion object Compainon { + actual val inTheCompanionOfBottomActualDeclarations: String = + "I'm a string from the companion object of `$this` in `$sourceSetName` module `$moduleName`" + } +} + +actual open class MPOuter { + protected actual open val b: Int = 4325 + internal actual val c: Int = 2345 + actual val d: Int = 325 + + protected actual class MPNested { + actual val e: Int = 345 + } + +} + +class ChildOfCommonInMacos : Outer() { + override val b: Int + get() = super.b + 243 + val callAlso = super.c // internal in Outer + + private val other = Nested() +} + +class ChildOfMPOuterInMacos : MPOuter() { + private val sav = MPNested() +} + +actual val sourceSetName: String = "macosMain" \ No newline at end of file