From 848a80a266cb4e0f0fc611087cc6343e0b0ab8da Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 26 Sep 2017 14:17:56 +0300 Subject: [PATCH] Add test (with incorrect work yet) for KT-17374 --- .../multiplatform/transitive/common/common.kt | 1 + .../multiplatform/transitive/jvm_base/base.kt | 3 +++ .../multiplatform/transitive/jvm_user/user.kt | 3 +++ .../resolve/MultiPlatformHighlightingTest.kt | 21 +++++++++++++++++++ .../idea/stubs/AbstractMultiModuleTest.kt | 21 +++++++++++++------ 5 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/transitive/common/common.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/transitive/jvm_base/base.kt create mode 100644 idea/testData/multiModuleHighlighting/multiplatform/transitive/jvm_user/user.kt diff --git a/idea/testData/multiModuleHighlighting/multiplatform/transitive/common/common.kt b/idea/testData/multiModuleHighlighting/multiplatform/transitive/common/common.kt new file mode 100644 index 00000000000..d79a7b292e8 --- /dev/null +++ b/idea/testData/multiModuleHighlighting/multiplatform/transitive/common/common.kt @@ -0,0 +1 @@ +expect fun foo(): Int \ No newline at end of file diff --git a/idea/testData/multiModuleHighlighting/multiplatform/transitive/jvm_base/base.kt b/idea/testData/multiModuleHighlighting/multiplatform/transitive/jvm_base/base.kt new file mode 100644 index 00000000000..3ec588cd03d --- /dev/null +++ b/idea/testData/multiModuleHighlighting/multiplatform/transitive/jvm_base/base.kt @@ -0,0 +1,3 @@ +fun bar(): Int { + return 42 +} \ No newline at end of file diff --git a/idea/testData/multiModuleHighlighting/multiplatform/transitive/jvm_user/user.kt b/idea/testData/multiModuleHighlighting/multiplatform/transitive/jvm_user/user.kt new file mode 100644 index 00000000000..55ccc114ba2 --- /dev/null +++ b/idea/testData/multiModuleHighlighting/multiplatform/transitive/jvm_user/user.kt @@ -0,0 +1,3 @@ +fun user(): Int { + return 2 * bar() +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiPlatformHighlightingTest.kt b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiPlatformHighlightingTest.kt index fce4f3c0328..f742dd3d10c 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiPlatformHighlightingTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiPlatformHighlightingTest.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime import org.jetbrains.kotlin.config.JvmTarget import org.jetbrains.kotlin.config.TargetPlatformKind import org.jetbrains.kotlin.idea.framework.JSLibraryKind +import org.jetbrains.kotlin.idea.stubs.createFacet import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.test.TestJdkKind @@ -85,4 +86,24 @@ class MultiPlatformHighlightingTest : AbstractMultiModuleHighlightingTest() { fun ignore_testNestedClassWithoutImpl() { doMultiPlatformTest(TargetPlatformKind.Jvm[JvmTarget.JVM_1_6]) } + + fun testTransitive() { + val commonModule = module("common", TestJdkKind.MOCK_JDK) + commonModule.createFacet(TargetPlatformKind.Common, false) + val jvmPlatform = TargetPlatformKind.Jvm[JvmTarget.JVM_1_6] + + val baseModule = module("jvm_base", TestJdkKind.MOCK_JDK) + baseModule.createFacet(jvmPlatform, implementedModuleName = "common") + baseModule.enableMultiPlatform() + baseModule.addDependency(commonModule) + + val userModule = module("jvm_user", TestJdkKind.MOCK_JDK) + userModule.createFacet(jvmPlatform) + userModule.enableMultiPlatform() + userModule.addDependency(commonModule) + userModule.addDependency(baseModule) + + checkHighlightingInAllFiles() + } + } \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractMultiModuleTest.kt b/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractMultiModuleTest.kt index cbc3a29d36f..107423f6e24 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractMultiModuleTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/stubs/AbstractMultiModuleTest.kt @@ -118,15 +118,24 @@ abstract class AbstractMultiModuleTest : DaemonAnalyzerTestCase() { } } -fun Module.createFacet(platformKind: TargetPlatformKind<*>? = null, useProjectSettings: Boolean = true) { +fun Module.createFacet( + platformKind: TargetPlatformKind<*>? = null, + useProjectSettings: Boolean = true, + implementedModuleName: String? = null +) { val accessToken = WriteAction.start() try { val modelsProvider = IdeModifiableModelsProviderImpl(project) - getOrCreateFacet(modelsProvider, useProjectSettings).configuration.settings.initializeIfNeeded( - this, - modelsProvider.getModifiableRootModel(this), - platformKind - ) + with (getOrCreateFacet(modelsProvider, useProjectSettings).configuration.settings) { + initializeIfNeeded( + this@createFacet, + modelsProvider.getModifiableRootModel(this@createFacet), + platformKind + ) + if (implementedModuleName != null) { + this.implementedModuleName = implementedModuleName + } + } modelsProvider.commit() } finally {